runtime.sendNativeMessage()
从扩展程序向原生应用程序发送单个消息。
此函数需要两个必填参数:原生应用程序的名称以及要发送的消息的 JSON 对象。浏览器将启动原生应用程序并传递消息。
这是一个异步函数,返回一个 Promise。原生应用程序发送的第一条消息将被视为对 sendNativeMessage() 调用的响应,该 Promise 将会用此消息作为参数来 fulfilled。请注意,您不能使用 runtime.onMessage 来获取应用程序的响应:您必须改用回调函数。
每次调用 runtime.sendNativeMessage() 时都会启动应用程序的新实例。浏览器在收到回复后将终止原生应用程序。要终止原生应用程序,浏览器将关闭管道,给进程几秒钟时间正常退出,如果进程尚未退出,则将其终止。
有关更多信息,请参阅 原生消息。
语法
js
let sending = browser.runtime.sendNativeMessage(
application, // string
message // object
)
参数
application-
string。原生应用程序的名称。这必须与原生应用程序的 manifest 文件中的“name”属性匹配。 message-
object。将发送到原生应用程序的 JSON 对象。
返回值
一个 Promise。如果发送者发送了响应,则此 Promise 将会用 JSON 对象形式的响应来 fulfilled。否则,它将不带参数地 fulfilled。如果连接原生应用程序时发生错误,则 Promise 将被拒绝并附带错误消息。
示例
这是一个后台脚本,当用户点击浏览器操作时,它会向“ping_pong”应用程序发送一条“ping”消息并记录响应。
js
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);
});
浏览器兼容性
加载中…
注意:此 API 基于 Chromium 的 chrome.runtime API。此文档源自 Chromium 代码中的 runtime.json。