使用executeScript的代码注入从不在Chrome扩展中调用回调

时间:2017-02-28 12:52:38

标签: javascript google-chrome google-chrome-extension code-injection

我正在尝试创建我正在创建的Chrome扩展程序(打算在第三方网站上自动填写表单 - 我知道你的想法,不是垃圾邮件,不是)。因此,当我尝试使用executeScript将JS注入此页面时,它永远不会调用回调函数。这是代码:

too

第二个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以及所有后续代码永远不会执行。有什么想法吗?提前致谢!抱歉我的英语......

1 个答案:

答案 0 :(得分:1)

默认情况下,

chrome.tabs.executeScript会在document_idle处注入,因此它可能无法在某些奇怪的页面上运行,这些页面由于某种原因而保留在" busy"状态。

解决方案:强制立即执行runAt: 'document_start'

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