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。