此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in English Always switch to English

runtime.onConnect

当使用扩展处理或 content script 建立连接时触发。

Syntax

js
browser.runtime.onConnect.addListener(listener); browser.runtime.onConnect.removeListener(listener); browser.runtime.onConnect.hasListener(listener); 

事件包含三个函数:

addListener(callback)

为此事件添加监听器。

removeListener(listener)

停止监听此事件。listener 参数为需要移除的监听器。

hasListener(listener)

检查是否已为此事件注册了 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

Examples

This content script:

  • connects to the background script, and stores the Port in a variable myPort
  • listens for messages on myPort, and logs them
  • sends messages to the background script, using myPort, when the user clicks the document
js
// 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
  • sends messages to the content script, using portFromCS, when the user clicks the extension's browser action

js
// 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.