Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

webRequest.handlerBehaviorChanged()

Diese Funktion kann verwendet werden, um sicherzustellen, dass Event-Listener korrekt angewendet werden, wenn Seiten im In-Memory-Cache des Browsers sind. Wenn der Browser eine Seite geladen hat und die Seite erneut geladen wird, kann der Browser die Seite aus seinem In-Memory-Cache neu laden, und in diesem Fall werden keine Ereignisse für die Anforderung ausgelöst.

Angenommen, die Aufgabe einer Erweiterung besteht darin, Webanforderungen gegen ein Muster zu blockieren, und das folgende Szenario tritt ein:

  • Der Benutzer lädt eine Seite, die eine bestimmte Anfrage enthält, und das Muster erlaubt die Anfrage.
  • Die Ressource wird geladen und im Speicher zwischengespeichert.
  • Die Muster der Erweiterung werden so aktualisiert, dass die Ressource nicht mehr erlaubt wäre.
  • Der Benutzer lädt die Seite erneut.

Da die Seite aus dem Speicher-Cache neu geladen wird, wird der Listener möglicherweise nicht erneut aufgerufen, und die Anfrage wird trotz der neuen Richtlinie der Erweiterung geladen.

Die Funktion handlerBehaviorChanged() ist dazu gedacht, dieses Problem zu lösen. Sie leert den In-Memory-Cache, damit Seitenneuladungen Event-Listener auslösen.

Da handlerBehaviorChanged() den Cache leert, kann dies teuer und schlecht für die Leistung sein. Das webRequest-Modul definiert eine schreibgeschützte Eigenschaft MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES: Wenn mehr als diese Anzahl von Aufrufen in 10 Minuten getätigt wird, hat dies keine Wirkung.

Die Implementierung des Cachings und damit die Notwendigkeit dieser Funktion variiert von einem Browser zum anderen, sodass diese Funktion in einigen Browsern nichts bewirkt.

Dies ist eine asynchrone Funktion, die ein Promise zurückgibt.

Syntax

js
let flushingCache = browser.webRequest.handlerBehaviorChanged()

Parameter

Keine.

Rückgabewert

Ein Promise, das ohne Argumente erfüllt wird, wenn die Operation abgeschlossen ist.

Beispiele

Im folgenden Beispiel leeren wir den In-Memory-Cache durch einen Aufruf von handlerBehaviorChanged() und melden diese Aktion, indem wir eine entsprechende Nachricht in die Konsole protokollieren.

js
function onFlushed() {
  console.log(`In-memory cache flushed`);
}

function onError(error) {
  console.log(`Error: ${error}`);
}

let flushingCache = browser.webRequest.handlerBehaviorChanged();
flushingCache.then(onFlushed, onError);

Browser-Kompatibilität

Hinweis: Diese API basiert auf der chrome.webRequest API von Chromium. Diese Dokumentation ist abgeleitet von web_request.json im Chromium-Code.