javascript-Chrome注入脚本不一致问题

我所做的功能之下是将用户重定向到登录页面,然后注入js来登录用户.下面的代码运行良好,但不一致,我几乎无法调试它,因为该流包含整个页面的刷新.

在我的setLogin.js中,我尝试使用$(function(){})中的alert()包装进行调试;我发现有时它不会运行.因此,我怀疑脚本有时不会注入,但是为什么会这样呢?

chrome.tabs.update(null, {
    url: 'https://example.com/index.php?act=Login'
}, function () {

    chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {
        if (changeInfo.status == 'complete') {
            chrome.tabs.executeScript(null, {
                file: "jquery.js"
            }, function () {

                chrome.tabs.executeScript(null, {
                    code: 'var passedData = {username:"' + username + '",pass:"' + pass+'"}'
                }, function () {
                    chrome.tabs.executeScript(null, {
                        file: "setLogin.js"
                    }, function () {
                        window.close(); //close my popup

                    });
                });
            });

        }
    });
});
最佳答案
默认情况下,脚本会插入到document_idle中,该脚本与jQuery不一致,可能是因为它很大或使用了一些异步初始化.

解决方案:明确指定注入的脚本应立即运行.

chrome.tabs.executeScript({file: "jquery.js", runAt: "document_start"}, function(result) {
});

转载注明原文:javascript-Chrome注入脚本不一致问题 - 代码日志