Spec-Zone.ru › Web Extensions

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 в вкладке вместо этого.

hidden Необязательно

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);

Примеры расширений

  • annotate-page
  • apply-css
  • bookmark-it
  • chill-out
  • cookie-bg-picker
  • history-deleter
  • session-state

Совместимость с браузерами

Рабочий стол Мобильная версия
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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API