我所做的以下功能是将用户重定向到登录页面,然后注入 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) {
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)