import router from "@/router";
export function useComponents(
op: any = {
path: "",
title: "",
}
) {
return new Promise((resolve) => {
const url = op.path;
const iframe = document.createElement("iframe");
iframe.src = url;
iframe.style.position = "fixed";
iframe.style.top = "0";
iframe.style.left = "0";
iframe.style.width = "100%";
iframe.style.height = "100%";
iframe.style.background = "#fff";
iframe.style.border = "none";
iframe.style.zIndex = "1000";
const title = router
.getRoutes()
.find((item) => item.path === url.split("?")[0])?.meta?.title;
document.title = op.title || title || "";
document.body.appendChild(iframe);
history.pushState(null, "", "#useComponents");
function close() {
window.removeEventListener("message", messageHandler);
window.removeEventListener("popstate", popstateHandler);
if (iframe) {
document.body.removeChild(iframe);
}
}
function popstateHandler() {
console.log("111");
close();
resolve(null);
}
function messageHandler(event: any) {
const data = event.data || {};
if (data.action === "useComponents:pos") {
resolve(data.data);
close();
history.back();
}
}
window.addEventListener("popstate", popstateHandler);
window.addEventListener("message", messageHandler);
});
}
export function postMsg(obj: any = {}) {
window.parent &&
window.parent.postMessage(
{
action: "useComponents:pos",
data: obj,
},
"*"
);
}