0

我試圖創建Chrome擴展(我打算在第三方網站上自動填寫表單 - 我知道您的想法,而不是垃圾郵件,否)。所以當我試圖使用executeScript將JS注入到此頁面時,它從不調用回調函數。下面是代碼:使用executeScript進行代碼注入從不在Chrome擴展中調用回調

function doStepPopup() { 
console.log ("Step "+step+" begins"); 
debugger; 
var tab = curTab; 
chrome.tabs.executeScript (null, { 
    file: "extfiller.js" 
}, function() { 
    debugger; 
    console.log ("Script injected for step "+step); 
......... 
} 
doStepPopup(); 

debugger功能和console.log,從來沒有執行所有後續的代碼。有什麼想法嗎?提前致謝!對不起,我的英語...

+0

如果這段代碼住在你的擴展,以及什麼叫'doStepPopup'? – Xan

+0

猜測:第一個'debugger'使調試器窗口處於活動狀態,因此帶有'null'選項卡id的executeScript嘗試將腳本注入調試器窗口,當然,這個窗口失敗。 – wOxxOm

+0

@wOxxOm即使失敗,它也應該通過異常或'chrome.runtime.lastError'報告錯誤。 – Xan

回答

1

chrome.tabs.executeScript默認註冊在document_idle,所以它可能無法運行在一些奇怪的頁面,無論出於何種原因仍處於「繁忙」狀態。

解決方案:強制立即執行與runAt: 'document_start'

chrome.tabs.executeScript (null, { 
    file: 'extfiller.js', 
    runAt: 'document_start' 
}, function(results) { 
    console.log(results); 
});