Beschreibung
Der Namespace chrome.events enthält gängige Typen, die von APIs verwendet werden, die Ereignisse auslösen, um Sie über interessante Ereignisse zu informieren.
Ein Event ist ein Objekt, über das Sie benachrichtigt werden, wenn etwas Interessantes passiert. Hier ist ein
Beispiel für die Verwendung des Ereignisses chrome.alarms.onAlarm, um nach Ablauf eines Alarms benachrichtigt zu werden:
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 die Benachrichtigung. Das Argument für
addListener() ist immer eine Funktion, die Sie zur Verarbeitung des Ereignisses definieren, aber die Parameter des
hängen davon ab, welches Ereignis verarbeitet wird. Sehen Sie in der Dokumentation zu alarms.onAlarm nach:
Sie sehen, dass die Funktion nur einen Parameter hat: ein alarms.Alarm-Objekt mit Details
über den verstrichenen Alarm.
Beispiel-APIs, die Ereignisse verwenden: alarms, i18n, identity, runtime. Die meisten Chrome- APIs.
Deklarative Event-Handler
Mit deklarativen Ereignis-Handlern können Regeln definiert werden, die aus deklarativen Bedingungen bestehen. und Aktionen. Bedingungen werden im Browser und nicht im JavaScript-Modul ausgewertet, Roundtrip-Latenzen und ermöglicht eine sehr hohe Effizienz.
Deklarative Event-Handler werden beispielsweise in der Declarative Web Request API und Deklarative Content API. Auf dieser Seite werden die zugrunde liegenden Konzepte aller deklarativen Ereignisse beschrieben. Handler.
Regeln
Die einfachste Regel besteht aus einer oder mehreren Bedingungen und mindestens einer Aktion:
var rule = {
  conditions: [ /* my conditions */ ],
  actions: [ /* my actions */ ]
};
Wenn eine der Bedingungen erfüllt ist, werden alle Aktionen ausgeführt.
Zusätzlich zu den Bedingungen und Aktionen können Sie jeder Regel eine Kennung zuweisen. Das vereinfacht die Aufheben der Registrierung zuvor registrierter Regeln und eine Priorität zum Definieren der Rangfolge zwischen Regeln Prioritäten werden nur berücksichtigt, wenn Regeln miteinander in Konflikt stehen oder in einer bestimmten Reihenfolge. Aktionen werden in absteigender Reihenfolge nach der Priorität der zugehörigen 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
Ereignisobjekte unterstützen möglicherweise Regeln. Diese Ereignisobjekte rufen keine Callback-Funktion auf, wenn
Ereignisse auftreten, aber testen Sie, ob eine registrierte Regel mindestens eine erfüllte Bedingung hat, und führen Sie sie aus.
Aktionen, die mit dieser Regel verknüpft sind. Ereignisobjekte, die die deklarative API unterstützen, haben drei
Relevante Methoden: events.Event.addRules, events.Event.removeRules und
events.Event.getRules
Regeln hinzufügen
Wenn Sie Regeln hinzufügen möchten, rufen Sie die Funktion addRules() des Ereignisobjekts auf. Sie benötigt eine Reihe von Regelinstanzen,
als ersten Parameter und eine Callback-Funktion, 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 eingefügten Regeln.
erscheinen in derselben Reihenfolge wie in der übergebenen rule_list, wobei die optionalen Parameter id und
priority wurden mit den generierten Werten gefüllt. Wenn eine Regel ungültig ist, z.B. weil sie
Ungültige Bedingung oder Aktion ist, wird keine der Regeln hinzugefügt und die Variable runtime.lastError
wird beim Aufrufen der Callback-Funktion festgelegt. Jede Regel in rule_list muss eine eindeutige
Kennung, die derzeit nicht von einer anderen Regel verwendet wird, oder eine leere Kennung.
Regeln entfernen
Wenn Sie Regeln entfernen möchten, rufen Sie die Funktion removeRules() auf. Ein optionales Array von Regelkennungen wird akzeptiert.
als ersten Parameter und eine Callback-Funktion als zweiten Parameter.
var rule_ids = ["id1", "id2", ...];
function removeRules(rule_ids, function callback() {...});
Wenn rule_ids ein Array von Kennungen ist, werden alle Regeln mit aufgeführten Kennungen
entfernt. Wenn rule_ids eine unbekannte Kennung auflistet, wird sie ignoriert. Wenn
rule_ids ist undefined. Alle registrierten Regeln dieser Erweiterung werden entfernt. Das callback()
wird aufgerufen, wenn die Regeln entfernt wurden.
Regeln abrufen
Wenn Sie eine Liste der aktuell registrierten Regeln abrufen möchten, rufen Sie die Funktion getRules() auf. Sie akzeptiert ein
Optionales Array von Regelkennungen mit derselben Semantik wie removeRules und einer Callback-Funktion.
var rule_ids = ["id1", "id2", ...];
function getRules(rule_ids, function callback(details) {...});
Der an die Funktion callback() übergebene Parameter details bezieht sich auf ein Array von Regeln,
optionale Parameter gefüllt.
Leistung
Beachten Sie die folgenden Richtlinien, um die bestmögliche Leistung zu erzielen.
Mehrere Regeln gleichzeitig registrieren und ihre Registrierung aufheben Nach jeder Registrierung oder Abmeldung muss Chrome interne Datenstrukturen zu aktualisieren. Diese Aktualisierung ist ein teurer 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]);
Bevorzugen Sie in events.UrlFilter den Abgleich von Teilstrings gegenüber regulären Ausdrücken. Der auf Teilstrings basierende Abgleich 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 mehrere Regeln die gleichen Aktionen umfassen, führen Sie die Regeln zu einer zusammen. Regeln lösen ihre Aktionen aus, sobald eine bestimmte Bedingung erfüllt ist. Dadurch wird der und reduziert den Arbeitsspeicherverbrauch für doppelte Aktionssätze.
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 der Ereignisse angeben können, an denen Sie interessiert sind. Ein Listener, der einen Filter verwendet, wird nicht für Ereignisse aufgerufen, die den -Filter, wodurch der Überwachungscode deklarativer und effizienter wird. Ein Service Worker benötigt nicht für Ereignisse geweckt werden, die sie nicht interessieren.
Gefilterte Ereignisse sollen einen Übergang vom manuellen Filtercode wie den folgenden ermöglichen:
chrome.webNavigation.onCommitted.addListener(function(e) {
  if (hasHostSuffix(e.url, 'google.com') ||
      hasHostSuffix(e.url, 'google.com.au')) {
    // ...
  }
});
in diese Datei einfügen:
chrome.webNavigation.onCommitted.addListener(function(e) {
  // ...
}, {url: [{hostSuffix: 'google.com'},
          {hostSuffix: 'google.com.au'}]});
Ereignisse unterstützen bestimmte Filter, die für das jeweilige Ereignis relevant sind. Die Liste der Filter, die für ein Ereignis werden in der Dokumentation zu diesem Ereignis unter „Filter“ aufgeführt. .
Beim Abgleich von URLs (wie im Beispiel oben) wird von Ereignisfiltern derselbe URL-Abgleich unterstützt.
Funktionen wie mit einem events.UrlFilter auszudrücken, ausgenommen Schema- und Portabgleich.
Typen
Event
Ein Objekt, mit dem Listener für ein Chrome-Ereignis hinzugefügt oder entfernt werden können.
Attribute
- 
    addListenervoidm Registriert einen Event-Listener-Callback für ein Ereignis. Die Funktion addListenersieht so aus: <ph type="x-smartling-placeholder"></ph>(callback: H) => {...} - 
    callbackH Wird aufgerufen, wenn ein Ereignis eintritt. Die Parameter dieser Funktion hängen vom Ereignistyp ab. 
 
- 
    
- 
    addRulesvoidm Registriert Regeln zur Verarbeitung von Ereignissen. Die Funktion addRulessieht so aus: <ph type="x-smartling-placeholder"></ph>(rules: Rule<anyany>[], callback?: function) => {...} - 
    RegelnRegel<beliebig>[] Regeln, die registriert werden sollen. Diese ersetzen keine zuvor registrierten Regeln. 
- 
    callbackFunktion optional Der Parameter callbacksieht so aus: <ph type="x-smartling-placeholder"></ph>(rules: Rule<anyany>[]) => void - 
    RegelnRegel<beliebig>[] Regeln, die registriert wurden. Die optionalen Parameter werden mit Werten gefüllt. 
 
- 
    
 
- 
    
- 
    getRulesvoidm Gibt aktuell registrierte Regeln zurück. Die Funktion getRulessieht so aus: <ph type="x-smartling-placeholder"></ph>(ruleIdentifiers?: string[], callback: function) => {...} - 
    ruleIdentifiersstring[] optional Wenn ein Array übergeben wird, werden nur Regeln mit IDs zurückgegeben, die in diesem Array enthalten sind. 
- 
    callbackFunktion Der Parameter callbacksieht so aus: <ph type="x-smartling-placeholder"></ph>(rules: Rule<anyany>[]) => void - 
    RegelnRegel<beliebig>[] Regeln, die registriert wurden. Die optionalen Parameter werden mit Werten gefüllt. 
 
- 
    
 
- 
    
- 
    hasListenervoidm Die Funktion hasListenersieht so aus: <ph type="x-smartling-placeholder"></ph>(callback: H) => {...} - 
    callbackH Listener, dessen Registrierungsstatus getestet werden soll 
 - 
            Gibt zurückboolean Dieser Wert ist „True“, wenn der Callback für das Ereignis registriert ist. 
 
- 
    
- 
    hasListenersvoidm Die Funktion hasListenerssieht so aus: <ph type="x-smartling-placeholder"></ph>() => {...}- 
            Gibt zurückboolean "True", wenn Ereignis-Listener für das Ereignis registriert sind. 
 
- 
            
- 
    removeListenervoidm Hebt die Registrierung eines Event-Listener-Callbacks von einem Ereignis auf. Die Funktion removeListenersieht so aus: <ph type="x-smartling-placeholder"></ph>(callback: H) => {...} - 
    callbackH Listener, der abgemeldet werden soll. 
 
- 
    
- 
    removeRulesvoidm Hebt die Registrierung von derzeit registrierten Regeln auf. Die Funktion removeRulessieht so aus: <ph type="x-smartling-placeholder"></ph>(ruleIdentifiers?: string[], callback?: function) => {...} - 
    ruleIdentifiersstring[] optional Wenn ein Array übergeben wird, werden nur Regeln mit Kennungen entfernt, die in diesem Array enthalten sind. 
- 
    callbackFunktion optional Der Parameter callbacksieht so aus: <ph type="x-smartling-placeholder"></ph>() => void 
 
- 
    
Rule
Beschreibung einer deklarativen Regel zur Verarbeitung von Ereignissen.
Attribute
- 
    AktionenBeliebig[] Liste der Aktionen, die ausgelöst werden, wenn eine der Bedingungen erfüllt ist. 
- 
    BedingungenBeliebig[] Liste der Bedingungen, die die Aktionen auslösen können. 
- 
    idString optional Optionale Kennung, mit der auf diese Regel verwiesen werden kann. 
- 
    prioritätZahl optional Optionale Priorität dieser Regel. Die Standardeinstellung ist 100. 
- 
    Tagsstring[] optional Mit Tags können Sie Regeln annotieren und Vorgänge für Regelsätze ausführen. 
UrlFilter
Filtert URLs nach verschiedenen Kriterien. Siehe Ereignisfilterung. Bei allen Kriterien wird zwischen Groß- und Kleinschreibung unterschieden.
Attribute
- 
    cidrBlocksstring[] optional Chrome 123 und höherStimmt überein, wenn der Hostteil der URL eine IP-Adresse ist und in einem der im Array angegebenen CIDR-Blöcke enthalten ist. 
- 
    hostContainsString optional Stimmt überein, wenn der Hostname der URL eine angegebene Zeichenfolge enthält. Um zu testen, ob eine Hostnamenkomponente das Präfix "foo" hat, verwenden Sie hostEnthält: ".foo". Dies stimmt mit "www.foobar.com" überein. und "foo.com", da am Anfang des Hostnamens ein impliziter Punkt hinzugefügt wird. Auf ähnliche Weise kann hostEnthälts für den Abgleich mit Komponenten-Suffix ("foo.") und für einen genauen Abgleich mit Komponenten (".foo.") verwendet werden. Suffix- und exakter Abgleich für die letzten Komponenten müssen separat mit hostSuffix durchgeführt werden, da kein impliziter Punkt am Ende des Hostnamens hinzugefügt wird. 
- 
    hostEqualsString optional Stimmt überein, wenn der Hostname der URL einem angegebenen String entspricht. 
- 
    hostPrefixString optional Stimmt überein, wenn der Hostname der URL mit einem angegebenen String beginnt. 
- 
    hostSuffixString optional Stimmt überein, wenn der Hostname der URL mit einem angegebenen String endet. 
- 
    originAndPathMatchesString optional Stimmt überein, wenn die URL ohne Abfragesegment und Fragmentkennung mit einem angegebenen regulären Ausdruck übereinstimmt. Portnummern werden aus der URL entfernt, wenn sie mit der Standardportnummer übereinstimmen. Für reguläre Ausdrücke wird die RE2-Syntax verwendet. 
- 
    pathContainsString optional Stimmt überein, wenn das Pfadsegment der URL eine angegebene Zeichenfolge enthält. 
- 
    pathEqualsString optional Stimmt überein, wenn das Pfadsegment der URL einem angegebenen String entspricht. 
- 
    pathPrefixString optional Stimmt überein, wenn das Pfadsegment der URL mit einem angegebenen String beginnt. 
- 
    pathSuffixString optional Stimmt überein, wenn das Pfadsegment der URL mit einem angegebenen String endet. 
- 
    ports(Zahl | Zahl[])[] optional Stimmt überein, wenn der Port der URL in einer der angegebenen Portlisten enthalten ist. [80, 443, [1000, 1200]]entspricht beispielsweise allen Anfragen an Port 80, 443 und im Bereich 1000–1200.
- 
    queryContainsString optional Stimmt überein, wenn das Abfragesegment der URL einen bestimmten String enthält. 
- 
    queryEqualsString optional Stimmt überein, wenn das Suchanfragensegment der URL einem angegebenen String entspricht. 
- 
    queryPrefixString optional Stimmt überein, wenn das Suchanfragensegment der URL mit einem angegebenen String beginnt. 
- 
    querySuffixString optional Stimmt überein, wenn das Suchanfragensegment der URL mit einem angegebenen String endet. 
- 
    Schematastring[] optional Stimmt überein, wenn das Schema der URL einem der im Array angegebenen Schemas entspricht. 
- 
    urlContainsString optional Stimmt überein, wenn die URL (ohne Fragment-ID) eine angegebene Zeichenfolge enthält. Portnummern werden aus der URL entfernt, wenn sie mit der Standardportnummer übereinstimmen. 
- 
    urlEqualsString optional Stimmt überein, wenn die URL (ohne Fragment-ID) einem angegebenen String entspricht. Portnummern werden aus der URL entfernt, wenn sie mit der Standardportnummer übereinstimmen. 
- 
    urlMatchesString optional Stimmt überein, wenn die URL (ohne Fragmentkennung) mit einem angegebenen regulären Ausdruck übereinstimmt. Portnummern werden aus der URL entfernt, wenn sie mit der Standardportnummer übereinstimmen. Für reguläre Ausdrücke wird die RE2-Syntax verwendet. 
- 
    urlPrefixString optional Stimmt überein, wenn die URL (ohne Fragment-ID) mit einem angegebenen String beginnt. Portnummern werden aus der URL entfernt, wenn sie mit der Standardportnummer übereinstimmen. 
- 
    urlSuffixString optional Stimmt überein, wenn die URL (ohne Fragment-ID) mit einem angegebenen String endet. Portnummern werden aus der URL entfernt, wenn sie mit der Standardportnummer übereinstimmen.