tabs.connect()
调用此函数来设置扩展的后台脚本(或其他特权脚本,如弹出脚本或选项页脚本)与属于此扩展且正在指定标签页中运行的任何内容脚本之间的连接。此函数返回一个runtime.Port 对象。
调用此函数时,将为属于此扩展且正在指定标签页中运行的任何内容脚本触发runtime.onConnect 事件。事件监听器将获得另一个runtime.Port 对象。然后,双方可以使用 Port 对象来交换消息。
有关更多详细信息,请参阅基于连接的消息传递。您也可以在不创建连接的情况下发送消息,有关选择建议,请参阅选择一次性消息还是基于连接的消息传递。
语法
js
browser.tabs.connect(
  tabId,      // integer
  connectInfo // optional object
)
参数
- tabId
- 
integer。我们希望连接其内容脚本的标签页的 ID。
- connectInfo可选
- 
具有以下属性的对象: - name可选
- 
string。将传递给属于此扩展且正在指定标签页中运行的内容脚本中的runtime.onConnect事件监听器。
- frameId可选
- 
integer。打开与由frameId标识的特定框架的端口,而不是标签页中的所有框架。
 
返回值
runtime.Port。一个可用于与在指定标签页中运行的内容脚本通信的端口。
示例
在此示例中,后台脚本监听浏览器操作上的点击,然后连接到当前活动标签页,接着使用 connect() 返回的 Port 发送消息。
js
function connectToTab(tabs) {
  if (tabs.length > 0) {
    let examplePort = browser.tabs.connect(tabs[0].id, {
      name: "tabs-connect-example",
    });
    examplePort.postMessage({ greeting: "Hi from background script" });
  }
}
function onError(error) {
  console.log(`Error: ${error}`);
}
browser.browserAction.onClicked.addListener(() => {
  let gettingActive = browser.tabs.query({
    currentWindow: true,
    active: true,
  });
  gettingActive.then(connectToTab, onError);
});
浏览器兼容性
加载中…
注意:此 API 基于 Chromium 的 chrome.tabs API。本文档源自 Chromium 代码中的 tabs.json。