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

浏览器兼容性

Chrome Edge Firefox Firefox for Android Opera
Basic support Yes No 50.0 No 33

示例

这是一个 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,