Aktualisierungsdatum: 2026-09-25 robots: noindex
Beschreibung
Der Namespace chrome.events enthält allgemeine Typen, die von APIs verwendet werden, die Ereignisse senden, um Sie über interessante Ereignisse zu informieren.
Ein Event ist ein Objekt, mit dem Sie sich benachrichtigen lassen können, wenn etwas Interessantes passiert. Hier ist ein Beispiel für die Verwendung des chrome.alarms.onAlarm-Ereignisses, um benachrichtigt zu werden, wenn ein Alarm abgelaufen ist:
chrome.alarms.onAlarm.addListener(function(alarm) {
appendToLog('alarms.onAlarm --'
+ ' name: ' + alarm.name
+ ' scheduledTime: ' + alarm.scheduledTime);
});
Wie das Beispiel zeigt, registrieren Sie sich mit addListener() für Benachrichtigungen. Das Argument für addListener() ist immer eine Funktion, die Sie definieren, um das Ereignis zu verarbeiten. Die Parameter für die Funktion hängen jedoch davon ab, welches Ereignis Sie verarbeiten. In der Dokumentation zu alarms.onAlarm sehen Sie, dass die Funktion einen einzelnen Parameter hat: ein alarms.Alarm-Objekt mit Details zum abgelaufenen Alarm.
Beispiel-APIs, die Ereignisse verwenden: alarms, i18n, identity, runtime. Die meisten Chrome-APIs.
Deklarative Event-Handler
Die deklarativen Ereignishandler bieten eine Möglichkeit, Regeln zu definieren, die aus deklarativen Bedingungen und Aktionen bestehen. Bedingungen werden im Browser und nicht in der JavaScript-Engine ausgewertet. Dadurch werden Roundtrip-Latenzen reduziert und eine sehr hohe Effizienz ermöglicht.
Deklarative Ereignishandler werden beispielsweise in der Declarative Web Request API und der Declarative Content API verwendet. Auf dieser Seite werden die zugrunde liegenden Konzepte aller deklarativen Ereignishandler beschrieben.
Regeln
Die einfachste Regel besteht aus einer oder mehreren Bedingungen und einer oder mehreren Aktionen:
var rule = {
conditions: [ /* my conditions */ ],
actions: [ /* my actions */ ]
};
Wenn eine der Bedingungen erfüllt ist, werden alle Aktionen ausgeführt.
Zusätzlich zu Bedingungen und Aktionen können Sie jeder Regel eine Kennung zuweisen, die das Aufheben der Registrierung zuvor registrierter Regeln vereinfacht, sowie eine Priorität, um die Vorrangstellung zwischen Regeln zu definieren. Prioritäten werden nur berücksichtigt, wenn Regeln miteinander in Konflikt stehen oder in einer bestimmten Reihenfolge ausgeführt werden müssen. Aktionen werden in absteigender Reihenfolge der Priorität ihrer Regeln ausgeführt.
var rule = {
id: "my rule", // optional, will be generated if not set.
priority: 100, // optional, defaults to 100.
conditions: [ /* my conditions */ ],
actions: [ /* my actions */ ]
};
Ereignisobjekte
Für Ereignisobjekte sind möglicherweise Regeln verfügbar. Bei diesen Ereignisobjekten wird keine Callback-Funktion aufgerufen, wenn Ereignisse eintreten. Stattdessen wird geprüft, ob für eine registrierte Regel mindestens eine Bedingung erfüllt ist, und die mit dieser Regel verknüpften Aktionen werden ausgeführt. Ereignisobjekte, die die deklarative API unterstützen, haben drei relevante Methoden: events.Event.addRules, events.Event.removeRules und events.Event.getRules.
Regeln hinzufügen
Rufen Sie die Funktion addRules() des Ereignisobjekts auf, um Regeln hinzuzufügen. Als ersten Parameter wird ein Array mit Regelinstanzen und als zweiten Parameter eine Callback-Funktion übergeben, die nach Abschluss aufgerufen wird.
var rule_list = [rule1, rule2, ...];
function addRules(rule_list, function callback(details) {...});
Wenn die Regeln erfolgreich eingefügt wurden, enthält der Parameter details ein Array mit den eingefügten Regeln in derselben Reihenfolge wie im übergebenen rule_list. Die optionalen Parameter id und priority wurden mit den generierten Werten gefüllt. Wenn eine Regel ungültig ist, z.B. weil sie eine ungültige Bedingung oder Aktion enthält, werden keine der Regeln hinzugefügt und die Variable runtime.lastError wird festgelegt, wenn die Callback-Funktion aufgerufen wird. Jede Regel in rule_list muss eine eindeutige ID enthalten, die derzeit nicht von einer anderen Regel verwendet wird, oder eine leere ID.
Regeln entfernen
Wenn Sie Regeln entfernen möchten, rufen Sie die Funktion removeRules() auf. Als ersten Parameter wird ein optionales Array von Regel-IDs und als zweiten Parameter eine Callback-Funktion akzeptiert.
var rule_ids = ["id1", "id2", ...];
function removeRules(rule_ids, function callback() {...});
Wenn rule_ids ein Array von Kennungen ist, werden alle Regeln mit Kennungen, die im Array aufgeführt sind, entfernt. Wenn in rule_ids eine unbekannte Kennung aufgeführt ist, wird sie ignoriert. Wenn rule_ids gleich undefined ist, werden alle registrierten Regeln dieser Erweiterung entfernt. Die Funktion callback() wird aufgerufen, wenn die Regeln entfernt wurden.
Regeln abrufen
Rufen Sie die Funktion getRules() auf, um eine Liste der aktuell registrierten Regeln abzurufen. Sie akzeptiert ein optionales Array von Regelkennungen mit derselben Semantik wie removeRules und eine Callback-Funktion.
var rule_ids = ["id1", "id2", ...];
function getRules(rule_ids, function callback(details) {...});
Der Parameter details, der an die Funktion callback() übergeben wird, verweist auf ein Array von Regeln, einschließlich ausgefüllter optionaler Parameter.
Leistung
Damit Sie die maximale Leistung erzielen, sollten Sie die folgenden Richtlinien beachten.
Regeln im Bulk registrieren und ihre Registrierung aufheben: Nach jeder Registrierung oder Deregistrierung müssen interne Datenstrukturen in Chrome aktualisiert werden. Diese Aktualisierung ist ein kostspieliger Vorgang.
Anstelle von:
var rule1 = {...};
var rule2 = {...};
chrome.declarativeWebRequest.onRequest.addRules([rule1]);
chrome.declarativeWebRequest.onRequest.addRules([rule2]);
Bevorzugt:
var rule1 = {...};
var rule2 = {...};
chrome.declarativeWebRequest.onRequest.addRules([rule1, rule2]);
Teilstring-Abgleich gegenüber regulären Ausdrücken in einem events.UrlFilter bevorzugen Der Abgleich auf Grundlage von Teilstrings ist extrem schnell.
Anstelle von:
var match = new chrome.declarativeWebRequest.RequestMatcher({
url: {urlMatches: "example.com/[^?]*foo" } });
Bevorzugt:
var match = new chrome.declarativeWebRequest.RequestMatcher({
url: {hostSuffix: "example.com", pathContains: "foo"} });
Wenn viele Regeln dieselben Aktionen haben, sollten Sie sie in einer Regel zusammenführen. Regeln lösen ihre Aktionen aus, sobald eine einzelne Bedingung erfüllt ist. Dadurch wird der Abgleich beschleunigt und der Speicherverbrauch für doppelte Aktionsgruppen reduziert.
Anstelle von:
var condition1 = new chrome.declarativeWebRequest.RequestMatcher({
url: { hostSuffix: 'example.com' } });
var condition2 = new chrome.declarativeWebRequest.RequestMatcher({
url: { hostSuffix: 'foobar.com' } });
var rule1 = { conditions: [condition1],
actions: [new chrome.declarativeWebRequest.CancelRequest()]};
var rule2 = { conditions: [condition2],
actions: [new chrome.declarativeWebRequest.CancelRequest()]};
chrome.declarativeWebRequest.onRequest.addRules([rule1, rule2]);
Bevorzugt:
var rule = { conditions: [condition1, condition2],
actions: [new chrome.declarativeWebRequest.CancelRequest()]};
chrome.declarativeWebRequest.onRequest.addRules([rule]);
Gefilterte Ereignisse
Gefilterte Ereignisse sind ein Mechanismus, mit dem Listener eine Teilmenge von Ereignissen angeben können, die für sie von Interesse sind. Ein Listener, der einen Filter verwendet, wird nicht für Ereignisse aufgerufen, die den Filter nicht bestehen. Dadurch wird der Listening-Code deklarativer und effizienter. Ein Service Worker muss nicht aktiviert werden, um Ereignisse zu verarbeiten, die ihn nicht betreffen.
Gefilterte Ereignisse sollen die Umstellung von manuellem Filtercode wie diesem ermöglichen:
chrome.webNavigation.onCommitted.addListener(function(e) {
if (hasHostSuffix(e.url, 'google.com') ||
hasHostSuffix(e.url, 'google.com.au')) {
// ...
}
});
in Folgendes ändern:
chrome.webNavigation.onCommitted.addListener(function(e) {
// ...
}, {url: [{hostSuffix: 'google.com'},
{hostSuffix: 'google.com.au'}]});
Für Ereignisse werden bestimmte Filter unterstützt, die für das jeweilige Ereignis relevant sind. Die Liste der Filter, die für ein Ereignis unterstützt werden, finden Sie in der Dokumentation für das jeweilige Ereignis im Abschnitt „filters“.
Beim Abgleich von URLs (wie im Beispiel oben) unterstützen Ereignisfilter dieselben URL-Abgleichsfunktionen wie mit einem events.UrlFilter, mit Ausnahme des Abgleichs von Schema und Port.
Typen
Event
Ein Objekt, mit dem Listener für ein Chrome-Ereignis hinzugefügt und entfernt werden können.
Attribute
-
addListener
void
Registriert einen Event-Listener-Callback für ein Ereignis.
Die Funktion
addListenersieht so aus:(callback: H) => {...}
-
callback
H
Wird aufgerufen, wenn ein Ereignis eintritt. Die Parameter dieser Funktion hängen vom Ereignistyp ab.
-
-
addRules
void
Registriert Regeln für die Verarbeitung von Ereignissen.
Die Funktion
addRulessieht so aus:(rules: Rule<anyany>[], callback?: function) => {...}
-
Regeln
Regel<anyany>[]
Zu registrierende Regeln. Sie ersetzen nicht die zuvor registrierten Regeln.
-
callback
Funktion optional
Der Parameter
callbacksieht so aus:(rules: Rule<anyany>[]) => void
-
Regeln
Regel<anyany>[]
Regeln, die registriert wurden, wobei die optionalen Parameter mit Werten gefüllt sind.
-
-
-
getRules
void
Gibt die aktuell registrierten Regeln zurück.
Die Funktion
getRulessieht so aus:(ruleIdentifiers?: string[], callback: function) => {...}
-
ruleIdentifiers
string[] optional
Wenn ein Array übergeben wird, werden nur Regeln mit Kennungen zurückgegeben, die in diesem Array enthalten sind.
-
callback
Funktion
Der Parameter
callbacksieht so aus:(rules: Rule<anyany>[]) => void
-
Regeln
Regel<anyany>[]
Regeln, die registriert wurden, wobei die optionalen Parameter mit Werten gefüllt sind.
-
-
-
hasListener
void
Die Funktion
hasListenersieht so aus:(callback: H) => {...}
-
callback
H
Listener, dessen Registrierungsstatus getestet werden soll.
-
Gibt zurück
boolean
„True“, wenn callback für das Ereignis registriert ist.
-
-
hasListeners
void
Die Funktion
hasListenerssieht so aus:() => {...}-
Gibt zurück
boolean
„True“, wenn Event-Listener für das Ereignis registriert sind.
-
-
removeListener
void
Hebt die Registrierung eines Event-Listeners callback für ein Ereignis auf.
Die Funktion
removeListenersieht so aus:(callback: H) => {...}
-
callback
H
Listener, dessen Registrierung aufgehoben werden soll.
-
-
removeRules
void
Hebt die Registrierung von derzeit registrierten Regeln auf.
Die Funktion
removeRulessieht so aus:(ruleIdentifiers?: string[], callback?: function) => {...}
-
ruleIdentifiers
string[] optional
Wenn ein Array übergeben wird, werden nur Regeln mit Kennungen, die in diesem Array enthalten sind, abgemeldet.
-
callback
Funktion optional
Der Parameter
callbacksieht so aus:() => void
-
Rule
Beschreibung einer deklarativen Regel für die Verarbeitung von Ereignissen.
Attribute
-
Aktionen
any[]
Liste der Aktionen, die ausgelöst werden, wenn eine der Bedingungen erfüllt ist.
-
Bedingungen
any[]
Liste der Bedingungen, die die Aktionen auslösen können.
-
id
String optional
Optionale Kennung, mit der auf diese Regel verwiesen werden kann.
-
priority
number optional
Optionale Priorität dieser Regel. Die Standardeinstellung ist 100.
-
Tags
string[] optional
Mit Tags können Sie Regeln mit Anmerkungen versehen und Vorgänge für Gruppen von Regeln ausführen.
UrlFilter
Filtert URLs nach verschiedenen Kriterien. Weitere Informationen finden Sie unter Ereignisfilterung. Bei allen Kriterien wird zwischen Groß- und Kleinschreibung unterschieden.
Attribute
-
cidrBlocks
string[] optional
Chrome 123 und höherWird abgeglichen, wenn der Hostteil der URL eine IP-Adresse ist und in einem der im Array angegebenen CIDR-Blöcke enthalten ist.
-
hostContains
String optional
Wird abgeglichen, wenn der Hostname der URL einen bestimmten String enthält. Um zu testen, ob eine Hostname-Komponente das Präfix „foo“ hat, verwenden Sie „hostContains: '.foo'“. Dies entspricht „www.foobar.com“ und „foo.com“, da am Anfang des Hostnamens ein impliziter Punkt hinzugefügt wird. Ebenso kann „hostContains“ verwendet werden, um nach dem Komponentensuffix („foo.“) zu suchen und Komponenten genau abzugleichen („.foo.“). Suffix- und Exact-Matching für die letzten Komponenten müssen separat mit hostSuffix erfolgen, da am Ende des Hostnamens kein impliziter Punkt hinzugefügt wird.
-
hostEquals
String optional
Wird abgeglichen, wenn der Hostname der URL einem angegebenen String entspricht.
-
hostPrefix
String optional
Stimmt überein, wenn der Hostname der URL mit einem angegebenen String beginnt.
-
hostSuffix
String optional
Wird abgeglichen, wenn der Hostname der URL mit einem angegebenen String endet.
-
originAndPathMatches
String optional
Wird angewendet, wenn die URL ohne Abfragesegment und Fragmentbezeichner mit einem angegebenen regulären Ausdruck übereinstimmt. Portnummern werden aus der URL entfernt, wenn sie mit der Standardportnummer übereinstimmen. Für die regulären Ausdrücke wird die RE2-Syntax verwendet.
-
pathContains
String optional
Stimmt überein, wenn das Pfadsegment der URL einen angegebenen String enthält.
-
pathEquals
String optional
Wird abgeglichen, wenn das Pfadsegment der URL einem angegebenen String entspricht.
-
pathPrefix
String optional
Wird abgeglichen, wenn das Pfadsegment der URL mit einem angegebenen String beginnt.
-
pathSuffix
String optional
Entspricht, wenn das Pfadsegment der URL mit einem angegebenen String endet.
-
ports
(number | number[])[] optional
Stimmt überein, wenn der Port der URL in einer der angegebenen Portlisten enthalten ist. Beispielsweise entspricht
[80, 443, [1000, 1200]]allen Anfragen an Port 80, 443 und im Bereich 1000–1200. -
queryContains
String optional
Wird abgeglichen, wenn das Abfragesegment der URL einen bestimmten String enthält.
-
queryEquals
String optional
Wird abgeglichen, wenn das Abfragesegment der URL mit einem angegebenen String übereinstimmt.
-
queryPrefix
String optional
Wird abgeglichen, wenn das Abfragesegment der URL mit einem angegebenen String beginnt.
-
querySuffix
String optional
Wird abgeglichen, wenn das Abfragesegment der URL mit einem bestimmten String endet.
-
Schemas
string[] optional
Stimmt überein, wenn das Schema der URL mit einem der im Array angegebenen Schemas übereinstimmt.
-
urlContains
String optional
Wird ausgelöst, wenn die URL (ohne Fragment-ID) einen bestimmten String enthält. Portnummern werden aus der URL entfernt, wenn sie mit der Standardportnummer übereinstimmen.
-
urlEquals
String optional
Wird abgeglichen, wenn die URL (ohne Fragmentbezeichner) mit einem angegebenen String übereinstimmt. Portnummern werden aus der URL entfernt, wenn sie mit der Standardportnummer übereinstimmen.
-
urlMatches
String optional
Wird ausgelöst, wenn die URL (ohne Fragmentbezeichner) mit einem angegebenen regulären Ausdruck übereinstimmt. Portnummern werden aus der URL entfernt, wenn sie mit der Standardportnummer übereinstimmen. Für die regulären Ausdrücke wird die RE2-Syntax verwendet.
-
urlPrefix
String optional
Wird abgeglichen, wenn die URL (ohne Fragmentbezeichner) mit einem angegebenen String beginnt. Portnummern werden aus der URL entfernt, wenn sie mit der Standardportnummer übereinstimmen.
-
urlSuffix
String optional
Wird abgeglichen, wenn die URL (ohne Fragment-ID) mit einem angegebenen String endet. Portnummern werden aus der URL entfernt, wenn sie mit der Standardportnummer übereinstimmen.