runtime.sendNativeMessage()

这篇翻译不完整。请帮忙从英语翻译这篇文章

从 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将会被一个错误的消息拒绝。

浏览器兼容性

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxOperaFirefox for Android
Basic supportChrome Full support 29Edge Full support 15Firefox Full support 50Opera Full support 16Firefox Android No support No

Legend

Full support  
Full support
No support  
No support

示例

这是一个 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);
});

Acknowledgements

这个API 基于 Chromium 的 chrome.runtime API。 本文来自 Chromium 代码中的 runtime.json

微软 Edge 的兼容性数据由 Microsoft Corporation 提供,并且包含在这里基于 Creative Commons Attribution 3.0 United States License。

文档标签和贡献者

此页面的贡献者: WEKEYSHIT
最后编辑者: WEKEYSHIT,