Подтвердить что ты не робот

Расширения Chrome: как узнать, когда вкладка закончила загрузку, из фоновой страницы

Я использую прослушиватель на исходной странице, чтобы узнать, когда загружена вкладка:

chrome.tabs.onUpdated.addListener(function (tabId) { })

Но прослушиватель запускается дважды: когда страница загрузилась и когда страница закончилась. Есть ли способ разграничить два случая?

4b9b3361

Ответ 1

К счастью, нашли решение.

Существует дополнительный параметр который содержит значение состояния:

chrome.tabs.onUpdated.addListener(function (tabId , info) {
  if (info.status === 'complete') {
    // your code ...
  }
});

Статус может быть либо loading, либо complete.

Ответ 2

Мне понадобился более простой способ сделать это после открытия вкладки

function createTab (url) {
    return new Promise(resolve => {
        chrome.tabs.create({url}, async tab => {
            chrome.tabs.onUpdated.addListener(function listener (tabId, info) {
                if (info.status === 'complete' && tabId === tab.id) {
                    chrome.tabs.onUpdated.removeListener(listener);
                    resolve(tab);
                }
            });
        });
    });
}

поэтому было бы

let tab = await createTab('http://google.com');