tabs.onUpdated
Wird ausgelöst, wenn ein Tab aktualisiert wird.
Wenn der Benutzer zu einer neuen URL in einem Tab navigiert, werden normalerweise mehrere onUpdated
-Ereignisse generiert, da verschiedene Eigenschaften des tabs.Tab
-Objekts aktualisiert werden. Dies schließt die url
ein, aber auch potenziell die title
- und favIconUrl
-Eigenschaften. Die status
-Eigenschaft wechselt zwischen "loading"
und "complete"
.
Dieses Ereignis wird auch bei Änderungen von Eigenschaften eines Tabs ausgelöst, die keine Navigation beinhalten, wie das Anheften und Lösen (was die pinned
-Eigenschaft aktualisiert) und das Stummschalten oder Aufheben der Stummschaltung (was die Eigenschaften audible
und mutedInfo
aktualisiert).
Sie können dieses Ereignis filtern, sodass es nur für Tabs ausgelöst wird, deren URLs bestimmten Mustern entsprechen, Änderungen an bestimmten Eigenschaften vornehmen, Änderungen an einem Tab oder einem Fenster betreffen, oder beliebige Kombinationen dieser Einschränkungen.
Syntax
browser.tabs.onUpdated.addListener(
listener, // function
filter // optional object
)
browser.tabs.onUpdated.removeListener(listener)
browser.tabs.onUpdated.hasListener(listener)
Ereignisse haben drei Funktionen:
addListener(callback, filter)
-
Fügt diesem Ereignis einen Listener hinzu.
removeListener(listener)
-
Stoppt das Lauschen dieses Ereignisses. Das
listener
-Argument ist der zu entfernende Listener. hasListener(listener)
-
Prüft, ob
listener
für dieses Ereignis registriert ist. Gibttrue
zurück, wenn es zuhört, andernfallsfalse
.
addListener-Syntax
Parameter
listener
-
Die Funktion, die aufgerufen wird, wenn dieses Ereignis eintritt. Der Funktion werden folgende Argumente übergeben:
tabId
-
integer
. Die ID des aktualisierten Tabs. changeInfo
-
object
. Eigenschaften des Tabs, die sich geändert haben. Siehe den Abschnitt changeInfo für weitere Details. tab
-
tabs.Tab
. Der neue Zustand des Tabs.
filter
Optional-
object
. Eine Menge von Filtern, die die an diesen Listener gesendeten Ereignisse einschränken. Dieses Objekt kann eine oder mehrere dieser Eigenschaften haben. Ereignisse werden nur gesendet, wenn alle angegebenen Filter erfüllt sind.urls
-
Array
. Ein Array von übereinstimmenden Mustern. Löst das Ereignis nur für Tabs aus, deren aktuelleurl
-Eigenschaft einem der Muster entspricht. properties
-
Array
. Ein Array von Zeichenketten, bestehend aus unterstütztentabs.Tab
-Objekteigenschaftsnamen. Löst das Ereignis nur für Änderungen an einer der im Array genannten Eigenschaften aus. Diese Eigenschaften können verwendet werden:- "attention"
- "autoDiscardable"
- "audible"
- "discarded"
- "favIconUrl"
- "groupId"
- "hidden"
- "isArticle"
- "mutedInfo"
- "openerTabId"
- "pinned"
- "status"
- "title"
- "url"
Hinweis: Der "url"-Wert wird seit Firefox 88 unterstützt. In Firefox 87 und früher können "url"-Änderungen beobachtet werden, indem nach "status" gefiltert wird.
tabId
-
Integer
. Löst dieses Ereignis nur für den Tab mit dieser ID aus. windowId
-
Integer
. Löst dieses Ereignis nur für Tabs im Fenster mit dieser ID aus.
Zusätzliche Objekte
changeInfo
Listet die Änderungen am Zustand des aktualisierten Tabs auf. Um mehr über diese Eigenschaften zu erfahren, siehe die tabs.Tab
-Dokumentation. Beachten Sie, dass nicht alle tabs.Tab
-Eigenschaften unterstützt werden.
attention
Optional-
boolean
. Gibt an, ob der Tab Aufmerksamkeit erregt. Zum Beispiel istattention
true
, wenn der Tab einen Modal-Dialog anzeigt. audible
Optional-
boolean
. Der neue hörbare Zustand des Tabs. autoDiscardable
Optional-
boolean
. Ob der Tab vom Browser verworfen werden kann. Der Standardwert isttrue
. Wenn auffalse
gesetzt, kann der Browser den Tab nicht automatisch verwerfen. Der Tab kann jedoch durchtabs.discard
verworfen werden. discarded
Optional-
boolean
. Ob der Tab verworfen wurde. Ein verworfener Tab ist einer, dessen Inhalt aus dem Speicher entladen wurde, aber im Tab-Bereich sichtbar bleibt. Sein Inhalt wird neu geladen, sobald er aktiviert wird. favIconUrl
Optional-
string
. Die neue Favicon-URL des Tabs. Wird nicht enthalten, wenn ein Tab sein Favicon verliert (navigieren von einer Seite mit Favicon zu einer Seite ohne). Prüfen SiefavIconUrl
im tab Abschnitt. groupId
Optional-
integer
. Die ID der Gruppe, in der sich die Tabs befinden oder-1
(tabGroups.TAB_GROUP_ID_NONE
) für ungruppierte Tabs. -
boolean
.True
, wenn der Tabhidden
ist. isArticle
Optional-
boolean
.True
, wenn der Tab ein Artikel ist und daher für die Anzeige im Reader Mode geeignet ist. mutedInfo
Optional-
tabs.MutedInfo
. Der neue stummgeschaltete Zustand des Tabs und der Grund für die Änderung. openerTabId
Optional-
integer
. Die ID des Tabs, der diesen Tab geöffnet hat, falls vorhanden. Diese Eigenschaft ist nur vorhanden, wenn der eröffnende Tab existiert und sich im gleichen Fenster befindet. pinned
Optional-
boolean
. Der neue angeheftete Zustand des Tabs. status
Optional-
string
. Der Status des Tabs. Kann entweder loading oder complete sein. title
Optional-
string
. Der neue Titel des Tabs. url
Optional-
string
. Die URL des Tabs, falls sie sich geändert hat.
Beispiele
Hören Sie auf und protokollieren Sie alle Änderungsinformationen und den neuen Zustand:
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);
Protokollieren Sie Änderungen an URLs:
function handleUpdated(tabId, changeInfo, tabInfo) {
if (changeInfo.url) {
console.log(`Tab: ${tabId} URL changed to ${changeInfo.url}`);
}
}
browser.tabs.onUpdated.addListener(handleUpdated);
Filterbeispiele
Protokollieren Sie Änderungen nur für Tabs, deren url
-Eigenschaft von https://developer.mozilla.org/*
oder https://mastodon.social/@mdn
übereinstimmt:
const pattern1 = "https://developer.mozilla.org/*";
const pattern2 = "https://mastodon.social/@mdn";
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);
Protokollieren Sie Änderungen nur an der pinned
-Eigenschaft der Tabs (also Anheften und Lösen):
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);
Kombinieren Sie beide vorherigen Filter, protokollieren Sie nur, wenn die pinned
-Eigenschaft von Tabs geändert wird, deren url
-Eigenschaft von https://developer.mozilla.org/*
oder https://mastodon.social/@mdn
übereinstimmt:
const pattern1 = "https://developer.mozilla.org/*";
const pattern2 = "https://mastodon.social/@mdn";
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);
Protokollieren Sie Änderungen nur, wenn die pinned
-Eigenschaft von Tabs geändert wird, deren url
-Eigenschaft von https://developer.mozilla.org/*
oder https://mastodon.social/@mdn
übereinstimmt und der Tab Teil des aktuellen Browserfensters war, als das Update-Ereignis ausgelöst wurde:
const pattern1 = "https://developer.mozilla.org/*";
const pattern2 = "https://mastodon.social/@mdn";
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);
Beispielerweiterungen
Browser-Kompatibilität
Hinweis:
Diese API basiert auf Chromiums chrome.tabs
API. Diese Dokumentation ist abgeleitet von tabs.json
im Chromium-Code.