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

Code injection using executeScript never call callback in Chrome extension

我正在尝试创建我正在创建的 Chrome 扩展(用于在第三方站点上自动填写表单 - 我知道您的想法,不是为了垃圾邮件,不是)。因此,当我尝试使用 executeScript 将 JS 注入此页面时,它从不调用回调函数。这是代码:

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

chrome.tabs.executeScript 默认情况下在 document_idle 处注入,因此它可能不会 运行 在某些奇怪的页面上,无论出于何种原因仍处于 "busy" 状态。

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

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