Correção na chamada das APIs via iframe

This commit is contained in:
Paulo Porto
2026-05-07 02:14:06 -03:00
parent 88787a054a
commit f574ba936c
2 changed files with 30 additions and 4 deletions

View File

@@ -181,7 +181,7 @@ async function executeSpaFrameFetch({ senderTabId, url, options = {} }) {
return executeSpaFrameScriptFetch(senderTabId, url, options);
}
async function ensureSpaFrameElementInTab(tabId) {
async function ensureSpaFrameElementInTab(tabId, options = {}) {
await chrome.scripting.executeScript({
target: { tabId, frameIds: [0] },
world: "MAIN",
@@ -189,8 +189,9 @@ async function ensureSpaFrameElementInTab(tabId) {
SPA_WORKBENCH_FRAME_HOST_ID,
SPA_WORKBENCH_FRAME_ID,
SPA_WORKBENCH_FRAME_URL,
Boolean(options.forceReload),
],
func: (hostId, frameId, frameUrl) => {
func: (hostId, frameId, frameUrl, forceReload) => {
const desiredParent = document.body || document.documentElement;
if (!desiredParent) {
@@ -250,7 +251,16 @@ async function ensureSpaFrameElementInTab(tabId) {
host.appendChild(frame);
}
if (!frame.src || frame.src === "about:blank" || frame.src !== frameUrl) {
if (
forceReload ||
!frame.src ||
frame.src === "about:blank" ||
frame.src !== frameUrl
) {
if (forceReload) {
frame.src = "about:blank";
}
frame.src = frameUrl;
}
@@ -262,8 +272,23 @@ async function ensureSpaFrameElementInTab(tabId) {
async function waitForSpaFramePresent(tabId) {
const startedAt = Date.now();
let lastFrames = "";
let lastEnsureAt = 0;
let forceReloaded = false;
while (Date.now() - startedAt < 45000) {
const elapsed = Date.now() - startedAt;
if (Date.now() - lastEnsureAt > 2500) {
await ensureSpaFrameElementInTab(tabId, {
forceReload: elapsed > 7000 && !forceReloaded,
});
lastEnsureAt = Date.now();
if (elapsed > 7000) {
forceReloaded = true;
}
}
const frames = await getFrameHints(tabId).catch(() => []);
const spaFrame = frames.find((frame) => isSpaFrameHint(frame));

View File

@@ -1,7 +1,7 @@
{
"manifest_version": 3,
"name": "Arch Panel Injector",
"version": "1.0.2",
"version": "1.0.3",
"description": "Insere o botao Arch panel no header do Oracle Workload Workbench.",
"permissions": [
"cookies",
@@ -174,5 +174,6 @@