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