runtime.sendNativeMessage()
从扩展向原生应用程序发送单条消息。
这需要两个必填参数:原生应用程序的名称和一个 JSON 对象,该对象是要发送给它的消息。浏览器将启动原生应用程序并传递消息。
这是一个异步函数,它返回一个 Promise
。原生应用程序发送的第一条消息被视为对 sendNativeMessage()
调用的响应,并且该承诺将使用此消息作为参数来履行。请注意,您无法使用 runtime.onMessage
获取来自应用程序的响应:您必须使用回调函数。
对于 runtime.sendNativeMessage()
的调用,将启动应用程序的新实例。浏览器将在收到回复后终止原生应用程序。要终止原生应用程序,浏览器将关闭管道,给进程几秒钟的时间正常退出,如果它尚未退出,则将其杀死。
有关更多信息,请参阅 原生消息传递。
语法
js
let sending = browser.runtime.sendNativeMessage(
application, // string
message // object
)
参数
application
-
string
. 原生应用程序的名称。这必须与 原生应用程序清单文件 中的 "name" 属性匹配。 message
-
object
. 将发送到原生应用程序的 JSON 对象。
返回值
一个 Promise
。如果发送者发送了响应,则将使用响应作为 JSON 对象来履行。否则,它将不带任何参数来履行。如果在连接到原生应用程序时发生错误,则该承诺将使用错误消息被拒绝。
浏览器兼容性
BCD 表格仅在浏览器中加载
示例
以下是一个后台脚本,它在用户单击浏览器操作时向 "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
。