From f034248d491c1d481a085a8d152696698ec79155 Mon Sep 17 00:00:00 2001 From: QLHazyCoder <2825305047@qq.com> Date: Sat, 11 Apr 2026 02:52:02 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E6=AD=A5=E9=AA=A41?= =?UTF-8?q?=E7=9A=84=E6=A0=87=E7=AD=BE=E5=88=9B=E5=BB=BA=E4=B8=8E=E5=86=85?= =?UTF-8?q?=E5=AE=B9=E8=84=9A=E6=9C=AC=E6=B3=A8=E5=85=A5=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E8=B6=85=E6=97=B6=E4=B8=8E=E9=87=8D=E8=AF=95=E6=9C=BA?= =?UTF-8?q?=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- background.js | 39 +++++++++++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/background.js b/background.js index 64ae061..ad9526a 100644 --- a/background.js +++ b/background.js @@ -1790,17 +1790,48 @@ async function executeStep1(state) { throw new Error('尚未配置 CPA 地址,请先在侧边栏填写。'); } await addLog('步骤 1:正在打开 CPA 面板...'); - await reuseOrCreateTab('vps-panel', state.vpsUrl, { - inject: ['content/utils.js', 'content/vps-panel.js'], - reloadIfSameUrl: true, + + const injectFiles = ['content/utils.js', 'content/vps-panel.js']; + + await closeConflictingTabsForSource('vps-panel', state.vpsUrl); + + const tab = await chrome.tabs.create({ url: state.vpsUrl, active: true }); + const tabId = tab.id; + await rememberSourceLastUrl('vps-panel', state.vpsUrl); + + await new Promise((resolve) => { + const timer = setTimeout(() => { + chrome.tabs.onUpdated.removeListener(listener); + resolve(); + }, 30000); + const listener = (updatedTabId, info) => { + if (updatedTabId === tabId && info.status === 'complete') { + chrome.tabs.onUpdated.removeListener(listener); + clearTimeout(timer); + resolve(); + } + }; + chrome.tabs.onUpdated.addListener(listener); }); - await sendToContentScript('vps-panel', { + await ensureContentScriptReadyOnTab('vps-panel', tabId, { + inject: injectFiles, + }); + + const result = await sendToContentScriptResilient('vps-panel', { type: 'EXECUTE_STEP', step: 1, source: 'background', payload: { vpsPassword: state.vpsPassword }, + }, { + timeoutMs: 30000, + retryDelayMs: 700, + logMessage: '步骤 1:CPA 面板通信未就绪,正在等待页面恢复...', }); + + if (result?.error) { + throw new Error(result.error); + } } // ============================================================