runtime.onConnect
当使用扩展处理或 content script 建立连接时触发。
Syntax
browser.runtime.onConnect.addListener(listener);
browser.runtime.onConnect.removeListener(listener);
browser.runtime.onConnect.hasListener(listener);
事件有三个方法:
addListener(callback)
-
为 这个事件添加一个监听器。
removeListener(listener)
-
停止监听这个事件。
listener
参数就是要移除的监听器。 hasListener(listener)
-
检查监听器是否已经注册到这个事件上。如果已经监听,则返回
true
否则返回false
.
addListener 语法
参数
function
-
A callback function that will be called when this event occurs. The function will be passed the following arguments:
port
-
A
runtime.Port
object connecting the current script to the other context it is connecting to.
Browser compatibility
BCD tables only load in the browser
Examples
This content script:
- connects to the background script, and stores the
Port
in a variablemyPort
- listens for messages on
myPort
, and logs them - sends messages to the background script, using
myPort
, when the user clicks the document
// content-script.js
var myPort = browser.runtime.connect({ name: "port-from-cs" });
myPort.postMessage({ greeting: "hello from content script" });
myPort.onMessage.addListener(function (m) {
console.log("In content script, received message from background script: ");
console.log(m.greeting);
});
document.body.addEventListener("click", function () {
myPort.postMessage({ greeting: "they clicked the page!" });
});
The corresponding background script:
-
listens for connection attempts from the content script
-
when it receives a connection attempt:
- stores the port in a variable named
portFromCS
- sends the content script a message using the port
- starts listening to messages received on the port, and logs them
- stores the port in a variable named
-
sends messages to the content script, using
portFromCS
, when the user clicks the extension's browser action
// background-script.js
var portFromCS;
function connected(p) {
portFromCS = p;
portFromCS.postMessage({ greeting: "hi there content script!" });
portFromCS.onMessage.addListener(function (m) {
console.log("In background script, received message from content script");
console.log(m.greeting);
});
}
browser.runtime.onConnect.addListener(connected);
browser.browserAction.onClicked.addListener(function () {
portFromCS.postMessage({ greeting: "they clicked the button!" });
});
备注:
This API is based on Chromium's chrome.runtime
API. This documentation is derived from runtime.json
in the Chromium code.