Fired when a connection is made with either an extension process or a content script.
On this page
runtime.onConnect
Syntax
browser.runtime.onConnect.addListener(listener)
browser.runtime.onConnect.removeListener(listener)
browser.runtime.onConnect.hasListener(listener)
    Events have three functions:
- 
      
addListener(callback) - 
      
Adds a listener to this event.
 - 
      
removeListener(listener) - 
      
Stop listening to this event. The
listenerargument is the listener to remove. - 
      
hasListener(listener) - 
      
Checks whether a
listeneris registered for this event. Returnstrueif it is listening,falseotherwise. 
addListener syntax
Parameters
- 
      
function - 
      
A callback function that will be called when this event occurs. The function will be passed the following arguments:
- 
        
port - 
        
A
runtime.Portobject connecting the current script to the other context it is connecting to. 
 - 
        
 
Browser compatibility
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | |
onConnect | 
       26 | 14 | 45 | ? | 15 | 14 | ? | ? | 48 | ? | 15 | ? | 
Examples
This content script:
- connects to the background script, and stores the 
Portin 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
let myPort = browser.runtime.connect({name:"port-from-cs"});
myPort.postMessage({greeting: "hello from content script"});
myPort.onMessage.addListener((m) => {
  console.log("In content script, received message from background script: ");
  console.log(m.greeting);
});
document.body.addEventListener("click", () => {
  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
let portFromCS;
function connected(p) {
  portFromCS = p;
  portFromCS.postMessage({greeting: "hi there content script!"});
  portFromCS.onMessage.addListener((m) => {
    console.log("In background script, received message from content script")
    console.log(m.greeting);
  });
}
browser.runtime.onConnect.addListener(connected);
browser.browserAction.onClicked.addListener(() => {
  portFromCS.postMessage({greeting: "they clicked the button!"});
});
    Note: This API is based on Chromium's chrome.runtime API. This documentation is derived from runtime.json in the Chromium code.
© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
 https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onConnect