Chrome Ext много загрузок на странице обновления - PullRequest
0 голосов
/ 18 декабря 2018

В приложении используйте скрипт контента для всех страниц и отправляйте сообщение активной странице на полной загруженной странице, но у меня много вызовов скрипта, иногда 2 и более:

Вы можете увидеть это здесь

Выполнение кода:

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 голосов
/ 20 декабря 2018

Каждый раз, когда запускается событие onCreated, вы добавляете новый onUpdated слушатель.

Когда после этого запускается событие onUpdated, всеони выполняются, что приводит к поведению, которое вы видите.

Вы должны либо отменить регистрацию обработчиков после их завершения, либо зарегистрировать обработчик только один раз.См. chrome.events документы (которые описывают общие точки всех объектов событий в других API) для идей о том, как реализовать это.

Обратите внимание, что код внутри chrome.tabs.onCreated слушателя не используетпараметр tabs вообще, поэтому неясно, зачем вам вообще нужно слушать onCreated.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...