从 WebExtension 发送单条消息到 native application。
它需要两个强制的参数:native application 的名字和要发送给它的JSON对象。浏览器将会加载 native application 然后发送这个消息。
这是一个异步函数,返回一个 Promise
对象。native application 发送的第一条消息将被当作sendNativeMessage()
的回复,并且 promise 将这个消息作为参数.。注意你不能使用 runtime.onMessage
从应用获取回复:你必须使用回调函数来替代。
每次调用 runtime.sendNativeMessage()
都会生成一个新的实例。浏览器将会在收到回复后结束这个 native application。为了结束这个 native application,浏览器将会关闭 pipe,并给进程几秒的时间优雅的退出,如果它没有关闭就杀死它。
更对信息,参考 Native messaging。
语法
var sending = browser.runtime.sendNativeMessage(
application, // string
message // object
)
参数
application
字符串类型。
native application的名字。它必须和 native application's manifest file中的‘name’字段一致。message
对象类型。一个将要发送给
native application的JSON对象。
返回值
一个 Promise
对象。如果native application发送了一个回复,它将会填充回复的JSON对象作为参数。否则它不会填充参数。如果在native application连接期间发生了错误,promise将会被一个错误的消息拒绝。
浏览器兼容性
BCD tables only load in the browser
这个页面的兼容性表从结构性数据生成的。如果你想提供数据,请访问 https://github.com/mdn/browser-compat-data 然后提交请求。
示例
这是一个 background script ,当使用者点击浏览器的browser action时,它会发送 "ping" 消息到 "ping_pong" 应用并且把回复记录下来:
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");
var sending = browser.runtime.sendNativeMessage("ping_pong", "ping");
sending.then(onResponse, onError);
});
这个API 基于 Chromium 的 chrome.runtime
API。 本文来自 Chromium 代码中的 runtime.json
。
微软 Edge 的兼容性数据由 Microsoft Corporation 提供,并且包含在这里基于 Creative Commons Attribution 3.0 United States License。