runtime.sendNativeMessage()
Sendet eine einzelne Nachricht von einer Erweiterung an eine native Anwendung.
Dies erfordert zwei obligatorische Parameter: den Namen der nativen Anwendung und ein JSON-Objekt, welches die Nachricht ist, die gesendet werden soll. Der Browser wird die native Anwendung starten und die Nachricht übermitteln.
Dies ist eine asynchrone Funktion, die ein Promise
zurückgibt. Die erste Nachricht, die von der nativen Anwendung gesendet wird, wird als Antwort auf den Aufruf von sendNativeMessage()
behandelt, und das Promise wird mit dieser Nachricht als Parameter erfüllt. Beachten Sie, dass Sie runtime.onMessage
nicht verwenden können, um Antworten von der Anwendung zu erhalten: Sie müssen stattdessen die Callback-Funktion verwenden.
Eine neue Instanz der Anwendung wird für einen Aufruf von runtime.sendNativeMessage()
gestartet. Der Browser wird die native Anwendung nach Erhalt einer Antwort beenden. Um eine native Anwendung zu beenden, schließt der Browser die Verbindung, gibt dem Prozess ein paar Sekunden, um ordnungsgemäß zu beenden, und beendet ihn dann, wenn er nicht beendet wurde.
Für weitere Informationen siehe Native Messaging.
Syntax
let sending = browser.runtime.sendNativeMessage(
application, // string
message // object
)
Parameter
application
-
string
. Der Name der nativen Anwendung. Dies muss mit der "name"-Eigenschaft in der manifest-Datei der nativen Anwendung übereinstimmen. message
-
object
. Ein JSON-Objekt, das an die native Anwendung gesendet wird.
Rückgabewert
Ein Promise
. Wenn der Absender eine Antwort gesendet hat, wird dies mit der Antwort als JSON-Objekt erfüllt. Andernfalls wird es ohne Argumente erfüllt. Wenn beim Verbinden mit der nativen Anwendung ein Fehler auftritt, wird das Promise mit einer Fehlermeldung abgelehnt.
Browser-Kompatibilität
BCD tables only load in the browser
Beispiele
Hier ist ein Hintergrund-Skript, das eine "ping"-Nachricht an die "ping_pong" App sendet und die Antwort protokolliert, wann immer der Benutzer auf die Browser-Aktion klickt:
function onResponse(response) {
console.log(`Received ${response}`);
}
function onError(error) {
console.log(`Error: ${error}`);
}
/*
On a click on the browser action, send the app a message.
*/
browser.browserAction.onClicked.addListener(() => {
console.log("Sending: ping");
let sending = browser.runtime.sendNativeMessage("ping_pong", "ping");
sending.then(onResponse, onError);
});
Hinweis: Diese API basiert auf der chrome.runtime
API von Chromium. Diese Dokumentation ist aus runtime.json
im Chromium-Code abgeleitet.