runtime.onUserScriptMessage
Verwenden Sie dieses Ereignis, um Nachrichten zu empfangen, die von einer der USER_SCRIPT-Welten der Erweiterung gesendet werden.
In Firefox erfordert dieses Ereignis die userScripts-Berechtigung. In Chrome ist das Ereignis immer verfügbar, auch in Erweiterungen, die die userScripts-Berechtigung nicht deklarieren.
Ein Userscript kann nur Nachrichten mit runtime.sendMessage von einer USER_SCRIPT-Welt senden, die mit userScripts.configureWorld() konfiguriert ist und bei der messaging auf true gesetzt ist.
Zusammen mit der Nachricht wird dem Listener Folgendes übergeben:
- ein sender-Objekt mit Details über den Absender der Nachricht.
- eine sendResponse-Funktion, die der Listener verwenden kann, um eine Antwort an den Absender zu schicken.
Syntax
browser.runtime.onUserScriptMessage.addListener(listener)
browser.runtime.onUserScriptMessage.removeListener(listener)
browser.runtime.onUserScriptMessage.hasListener(listener)
Ereignisse haben drei Funktionen:
- addListener(listener)
- 
Fügt diesem Ereignis einen Listener hinzu. 
- removeListener(listener)
- 
Hört auf, dieses Ereignis zu überwachen. Das Argument listenerist der zu entfernende Listener.
- hasListener(listener)
- 
Überprüft, ob ein listenerfür dieses Ereignis registriert ist. Gibttruezurück, wenn es zuhört, andernfallsfalse.
Syntax der addListener
>Parameter
- listener
- 
Die Funktion, die aufgerufen wird, wenn dieses Ereignis eintritt. Die Funktion erhält folgende Argumente: - message
- 
object. Die Nachricht. Dies ist ein JSON-fähiges Objekt.
- sender
- 
Ein runtime.MessageSender-Objekt, das den Absender der Nachricht darstellt.
- sendResponse
- 
Eine Funktion, die höchstens einmal aufgerufen werden kann, um eine Antwort auf die Nachricht zu senden. Die Funktion nimmt ein Argument entgegen, das jedes JSON-fähige Objekt sein kann. Dieses Argument wird an den Absender der Nachricht zurückgegeben. Wenn Sie mehr als einen onUserScriptMessage-Listener im selben Dokument haben, kann nur einer eine Antwort senden.Um eine Antwort synchron zu senden, rufen Sie sendResponseauf, bevor die Listener-Funktion zurückkehrt. Um eine Antwort asynchron zu senden, machen Sie Folgendes:- Behalten Sie eine Referenz auf das sendResponse-Argument und geben Sietruevon der Listener-Funktion zurück. Sie können dannsendResponseaufrufen, nachdem die Listener-Funktion zurückgekehrt ist.
- Geben Sie ein Promisevon der Listener-Funktion zurück und lösen Sie das Promise auf, wenn die Antwort bereit ist.
 
- Behalten Sie eine Referenz auf das 
 
Beispiele
In diesem Beispiel sendet ein Userscript in einer USER_SCRIPT-Welt mit der ID myScriptWorld eine Nachricht an die Erweiterung, die es registriert hat:
// The user script
// Send a message to the extension that registered the user script
browser.runtime.sendMessage("my message");
// The extension that registered the user script
function handleMessage(message, sender) {
  // check that the message originated from "myScriptWorld" world
  if (sender.userScriptWorldId === "myScriptWorld") {
    // process message
    console.log(message);
  }
}
browser.runtime.onUserScriptMessage.addListener(handleMessage);
Beispielerweiterungen
Browser-Kompatibilität
Loading…