Correção na abertura dos workload workbench quando não estiver disponível

This commit is contained in:
Paulo Porto
2026-05-06 14:32:03 -03:00
parent 5cb8961524
commit 88787a054a
3 changed files with 123 additions and 8 deletions

View File

@@ -4590,7 +4590,7 @@
frameHost.appendChild(existingFrame);
}
if (existingFrame.src !== frameUrl) {
if (shouldNavigateSpaFrame(existingFrame, frameUrl)) {
navigateSpaFrame(existingFrame, frameUrl);
}
@@ -4600,6 +4600,7 @@
const frame = document.createElement("iframe");
frame.id = IDS.spaFrame;
frame.name = IDS.spaFrame;
frame.dataset.archPanelFrame = "spa-workbench";
frame.setAttribute("aria-hidden", "true");
frame.setAttribute("referrerpolicy", "no-referrer-when-downgrade");
frame.tabIndex = -1;
@@ -4624,6 +4625,25 @@
const existingHost = document.getElementById(IDS.spaFrameHost);
if (existingHost) {
const desiredParent = document.body || document.documentElement;
if (desiredParent && existingHost.parentElement !== desiredParent) {
desiredParent.appendChild(existingHost);
}
Object.assign(existingHost.style, {
position: "fixed",
width: "1440px",
height: "1000px",
overflow: "hidden",
opacity: "0",
pointerEvents: "none",
border: "0",
left: "-20000px",
top: "0",
zIndex: "0",
});
return existingHost;
}
@@ -4640,20 +4660,31 @@
border: "0",
left: "-20000px",
top: "0",
zIndex: "-1",
zIndex: "0",
});
document.documentElement.appendChild(host);
(document.body || document.documentElement).appendChild(host);
return host;
}
function shouldNavigateSpaFrame(frame, frameUrl) {
const currentSrc = cleanString(frame.getAttribute("src") || frame.src);
if (!currentSrc || currentSrc === "about:blank") {
return true;
}
try {
return new URL(currentSrc, window.location.href).toString() !== frameUrl;
} catch {
return currentSrc !== frameUrl;
}
}
function navigateSpaFrame(frame, frameUrl) {
frame.dataset.archPanelLoaded = "false";
frame.removeAttribute("src");
window.setTimeout(() => {
frame.src = frameUrl;
}, 0);
frame.src = frameUrl;
}
function waitForFrameLoad(frame) {