Javascript 注入的脚本在Chrome扩展中执行两次

Javascript 注入的脚本在Chrome扩展中执行两次,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,这是我的popup.js,它包含在我的popup.html中,当我点击浏览器操作的图标时会触发 chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) { var tabId = tabs[0]; chrome.tabs.update(null, { url: 'https://example.com/login.php' }, function (

这是我的popup.js,它包含在我的popup.html中,当我点击浏览器操作的图标时会触发

chrome.tabs.query({
    active: true,
    currentWindow: true
}, function (tabs) {
    var tabId = tabs[0];

    chrome.tabs.update(null, {
        url: 'https://example.com/login.php'
    }, 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, {
                        file: "setLogin.js"
                    });
                });

            }
        });
    });

我的setLogin.js中有警报,但我不知道为什么它会执行两次。我希望它只会触发一次,因为我已经在changeInfo.status=='complete'块中设置了执行脚本。

您每次都在添加一个侦听器。因此,每次运行此代码时,都会将侦听器的另一个副本添加到要在触发tabs.onUpdate时执行的函数中。这可能是问题所在吗?您是否仔细阅读了这篇文章: