runtime.onConnectExternal
當擴充套件程式收到來自另一個擴充套件程式的連線請求時觸發。
要傳送一個訊息,該訊息將被 onConnectExternal 監聽器接收,請使用 runtime.connect(),並在 extensionId 引數中傳遞接收者的 ID。
監聽器會收到一個 runtime.Port 物件,然後可以使用該物件傳送和接收訊息。Port 物件還包含一個 sender 屬性,該屬性是一個 runtime.MessageSender 物件,接收者可以使用它來檢查傳送者的 ID。
語法
js
browser.runtime.onConnectExternal.addListener(listener)
browser.runtime.onConnectExternal.removeListener(listener)
browser.runtime.onConnectExternal.hasListener(listener)
事件有三個函式
addListener(listener)-
向此事件新增監聽器。
removeListener(listener)-
停止監聽此事件。
listener引數是要移除的監聽器。 hasListener(listener)-
檢查此事件是否已註冊
listener。如果正在偵聽,則返回true,否則返回false。
addListener 語法
引數
function-
當此事件發生時呼叫的函式。該函式將傳遞此引數
port-
一個
runtime.Port物件,連線當前指令碼與它正在連線的另一個擴充套件程式。
示例
在此示例中,Hansel 擴充套件程式連線到 Gretel 擴充套件程式
js
console.log("connecting to Gretel");
let myPort = browser.runtime.connect("gretel@mozilla.org");
myPort.onMessage.addListener((message) => {
console.log(`From Gretel: ${message.content}`);
});
browser.browserAction.onClicked.addListener(() => {
myPort.postMessage({ content: "Hello from Hansel" });
});
Gretel 監聽連線並檢查傳送者是否真的是 Hansel
js
let portFromHansel;
browser.runtime.onConnectExternal.addListener((port) => {
console.log(port);
if (port.sender.id === "hansel@mozilla.org") {
console.log("connection attempt from Hansel");
portFromHansel = port;
portFromHansel.onMessage.addListener((message) => {
console.log(`From Hansel: ${message.content}`);
});
}
});
browser.browserAction.onClicked.addListener(() => {
portFromHansel.postMessage({ content: "Message from Gretel" });
});
瀏覽器相容性
載入中…
注意:此 API 基於 Chromium 的 chrome.runtime API。本文件源自 Chromium 程式碼中的 runtime.json。