chrome ext在更新页面上加载了很多

时间:2018-12-18 15:49:31

标签: google-chrome google-chrome-extension

在应用程序中,所有页面均使用内容脚本,并在完整加载的页面上将消息发送到活动页面,但有时会有很多脚本调用,而我有2次或更多:

You can see that here

代码实现:

chrome.tabs.onCreated.addListener(function (tabs) {
   chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {
        if(changeInfo.status === "complete") {

                    let tabid = tab.id;

                    console.log("Site is valid: url -> " + tab.url)

                    chrome.tabs.executeScript(tab.id, {
                        file: '/injections/mobile.bet365.com.js',
                    });

                    console.log(tab);

                    setTimeout(function () {
                        console.log("timeout was set")

                        chrome.tabs.query({}, function (tabs) {

                            let countOpenedTabsFrom = tabs.length;
                            let opener = 1;

                            // на целевой вкладке
                            chrome.tabs.sendMessage(tabid, {
                                message: "start_app",
                                opener: opener,
                                queuenumber: countOpenedTabsFrom
                            }, function (response) {
                                console.log(response);
                            });
                        });
                    }, 500);
                }

执行的脚本也有很多查询。 为什么会这样?

1 个答案:

答案 0 :(得分:0)

每次onCreated事件触发时,您都在添加一个 new onUpdated侦听器。

此后,onUpdated事件触发时,将执行所有 ,导致您所看到的行为。

完成后,您需要注销处理程序,或者只注册一次处理程序。有关实现方法的想法,请参见chrome.events docs(描述了其他API中所有事件对象的共同点)。

请注意,chrome.tabs.onCreated侦听器中的代码根本不使用tabs参数,因此不清楚您为什么甚至需要侦听onCreated