tabs.onUpdated
Вызывается при обновлении вкладки.
Когда пользователь переходит по новой ссылке в вкладке, это обычно генерирует несколько onUpdated событий, поскольку различные свойства объекта tabs.Tab обновляются. Это включает в себя url, но также потенциально и title и favIconUrl свойства. Свойство status будет циклически перебирать "loading" и "complete".
Это событие также срабатывает при изменениях свойств вкладки, не связанных с навигацией, таких как закрепление и открепление (что обновляет свойство pinned ) и отключение или включение звука (что обновляет свойства audible и mutedInfo).
Вы можете отфильтровать это событие, сделав его активным только для вкладок, чьи URL соответствуют определенным шаблонам, изменениям определённых свойств, изменениям вкладки или окна, или любым комбинациям этих ограничений.
Синтаксис
browser.tabs.onUpdated.addListener(listener[, extraParameters]) browser.tabs.onUpdated.removeListener(listener) browser.tabs.onUpdated.hasListener(listener)
События имеют три функции:
addListener(callback[, extraParameters])-
Добавляет слушателя к этому событию.
removeListener(listener)-
Прекращает прослушивание этого события. Аргумент
listener— это слушатель, который необходимо удалить. hasListener(listener)-
Проверяет, зарегистрирован ли
listenerдля этого события. Возвращаетtrue, если он прослушивает,falseв противном случае.
Синтаксис addListener
Параметры
callback-
Функция, вызываемая при возникновении этого события. Функция получает следующие аргументы:
tabId-
integer. Идентификатор обновленной вкладки. changeInfo-
object. Свойства вкладки, которые изменились. Дополнительные сведения см. в разделе changeInfo. tab-
tabs.Tab. Новое состояние вкладки.
-
extraParametersНеобязательно -
object. Набор фильтров, которые ограничивают события, отправляемые этому слушателю. Этот объект может иметь одно или несколько из этих свойств. События отправляются только в том случае, если они удовлетворяют всем заданным фильтрам.urls-
Array. Массив шаблонов соответствия. Срабатывает только для вкладок, чье текущее свойствоurlсоответствует одному из шаблонов. properties-
Array. Массив строк, содержащих имена свойств объектаtabs.Tab. Событие срабатывает только при изменении одного из свойств, указанных в массиве. Эти свойства могут быть:- "attention"
- "audible"
- "discarded"
- "favIconUrl"
- "hidden"
- "isArticle"
- "mutedInfo"
- "pinned"
- "status"
- "title"
- "url"
Примечание: Значение "url" поддерживается с Firefox 88. В Firefox 87 и более ранних версиях изменения "url" можно наблюдать, отфильтровав по "status".
tabId-
Integer. Срабатывает только для вкладки, идентифицированной этим ID. windowId-
Integer. Срабатывает только для вкладок в окне, идентифицированном этим ID.
Дополнительные объекты
changeInfo
Перечисляет изменения в состоянии обновленной вкладки. Более подробную информацию об этих свойствах см. в документации tabs.Tab. Обратите внимание, что не все свойства tabs.Tab поддерживаются.
-
attentionНеобязательно -
boolean. Указывает, привлекает ли вкладка внимание. Например,attentionявляетсяtrueпри отображении вкладки модального диалогового окна. -
audibleНеобязательно -
boolean. Новое состояние звука вкладки. -
discardedНеобязательно -
boolean. Отбрасывается ли вкладка. Отброшенная вкладка — это вкладка, содержимое которой было выгружено из памяти, но она видна в строке вкладок. Ее содержимое загружается при следующем активации. -
favIconUrlНеобязательно -
string. Новый URL значка вкладки. Не включено, когда вкладка теряет свой значок (переход от страницы с значком к странице без него). ПроверьтеfavIconUrlв вкладке вместо этого. -
boolean. True, если вкладкаhidden. -
isArticleНеобязательно -
boolean. True, если вкладка является статьей и, следовательно, подходит для отображения вReader Mode. -
mutedInfoНеобязательно -
tabs.MutedInfo. Новое состояние отключения звука вкладки и причина изменения. -
pinnedНеобязательно -
boolean. Новое состояние закрепления вкладки. -
statusНеобязательно -
string. Статус вкладки. Может быть либо loading, либо complete. -
titleНеобязательно -
string. Новый заголовок вкладки. -
urlНеобязательно -
string. URL вкладки, если он изменился.
Примеры
Прослушивание и вывод всех сведений об изменениях и нового состояния:
function handleUpdated(tabId, changeInfo, tabInfo) { console.log(`Updated tab: ${tabId}`); console.log("Changed attributes: ", changeInfo); console.log("New tab Info: ", tabInfo); } browser.tabs.onUpdated.addListener(handleUpdated);
Вывод изменений в URL:
function handleUpdated(tabId, changeInfo, tabInfo) { if (changeInfo.url) { console.log(`Tab: ${tabId} URL changed to ${changeInfo.url}`); } } browser.tabs.onUpdated.addListener(handleUpdated);
Примеры фильтрации
Выводить изменения только для вкладок, чье свойство url соответствует https://developer.mozilla.org/* или https://twitter.com/mozdevnet:
const pattern1 = "https://developer.mozilla.org/*"; const pattern2 = "https://twitter.com/mozdevnet"; const filter = { urls: [pattern1, pattern2] } function handleUpdated(tabId, changeInfo, tabInfo) { console.log(`Updated tab: ${tabId}`); console.log("Changed attributes: ", changeInfo); console.log("New tab Info: ", tabInfo); } browser.tabs.onUpdated.addListener(handleUpdated, filter);
Выводить изменения только для свойства pinned вкладок (т.е. действия закрепления и открепления):
const filter = { properties: ["pinned"] } function handleUpdated(tabId, changeInfo, tabInfo) { console.log(`Updated tab: ${tabId}`); console.log("Changed attributes: ", changeInfo); console.log("New tab Info: ", tabInfo); } browser.tabs.onUpdated.addListener(handleUpdated, filter);
Комбинирование предыдущих фильтров, вывод только тогда, когда свойство pinned вкладок изменяется для вкладок, чье свойство url соответствует https://developer.mozilla.org/* или https://twitter.com/mozdevnet:
const pattern1 = "https://developer.mozilla.org/*"; const pattern2 = "https://twitter.com/mozdevnet"; const filter = { urls: [pattern1, pattern2], properties: ["pinned"] } function handleUpdated(tabId, changeInfo, tabInfo) { console.log(`Updated tab: ${tabId}`); console.log("Changed attributes: ", changeInfo); console.log("New tab Info: ", tabInfo); } browser.tabs.onUpdated.addListener( handleUpdated, filter);
Вывод изменений только тогда, когда свойство pinned вкладок меняется для вкладок, чье свойство url соответствует https://developer.mozilla.org/* или https://twitter.com/mozdevnet , где вкладка была частью текущего браузера при срабатывании события обновления:
const pattern1 = "https://developer.mozilla.org/*"; const pattern2 = "https://twitter.com/mozdevnet"; const filter = { urls: [pattern1, pattern2], properties: ["pinned"], windowId: browser.windows.WINDOW_ID_CURRENT } function handleUpdated(tabId, changeInfo, tabInfo) { console.log(`Updated tab: ${tabId}`); console.log("Changed attributes: ", changeInfo); console.log("New tab Info: ", tabInfo); } browser.tabs.onUpdated.addListener( handleUpdated, filter);
Примеры расширений
Совместимость с браузерами
| Рабочий стол | Мобильная версия | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | |
onUpdated |
Да | 14 | 45 | ? | Да | 14 | ? | ? | 54 | ? | 15 | ? |
extraParameters |
Нет | Нет | 61 | ? | Нет | Нет | ? | ? | Нет | ? | Нет | ? |
Примечание: Этот API основан на API chrome.tabs Chromium. Данная документация получена из tabs.json кода Chromium.
© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/onUpdated