Почему chrome .tabs.query () возвращает URL как неопределенный? - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь получить URL недавно созданной вкладки. Домен добавлен в permissions в моем манифесте. Вот простой слушатель:

chrome.tabs.onCreated.addListener(tab => {
    //  alert(tab.url);  // also undefined

    chrome.tabs.query({active: true, currentWindow: true}, tabs => {
        alert(tabs[0].url);  // url is undefined
    });
});

Если я добавлю тайм-аут, он будет работать, как и ожидалось:

chrome.tabs.onCreated.addListener(tab => {
    setTimeout(() => {
        chrome.tabs.query({active: true, currentWindow: true}, tabs => {
            alert(tabs[0].url);  // works
        });
    }, 100);
});

Но использование тайм-аута с произвольной продолжительностью кажется ошибочным. Чего мне не хватает?

А chrome.tabs.query вообще нужно? Я пропустил что-то, что позволило бы получить URL-адрес из объекта tab, передаваемого в прослушиватель?

1 Ответ

0 голосов
/ 28 апреля 2020
  • Поскольку Chrome 79 в chrome .tabs.onСоздано, вы должны использовать tab.pendingUrl || tab.url, поскольку URL-адрес все еще находится в процессе разрешения DNS et c. и он не отображается в адресной строке
  • То же самое в chrome .tabs.query, если он вызывается в данный момент на такой вкладке
chrome.tabs.onCreated.addListener(tab => {
  const url = tab.pendingUrl || tab.url;
  console.log(url);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...