Fired when an extension receives a connection request from a different extension.
To send a message which will be received by the onConnectExternal
listener, use runtime.connect()
, passing the ID of the recipient in the extensionId
parameter.
The listener is passed a runtime.Port
object which it can then use to send and receive messages. The Port
object also contains a sender
property, which is a runtime.MessageSender
object, and which the recipient can use to check the sender's ID.
browser.runtime.onConnectExternal.addListener(listener) browser.runtime.onConnectExternal.removeListener(listener) browser.runtime.onConnectExternal.hasListener(listener)
Events have three functions:
addListener(callback)
removeListener(listener)
listener
argument is the listener to remove.hasListener(listener)
listener
is registered for this event. Returns true
if it is listening, false
otherwise.function
A callback function that will be called when this event occurs. The function will be passed the following arguments:
port
runtime.Port
object connecting the current script to the other extension it is connecting to.Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | |
onConnectExternal |
26 |
79 |
54 |
? |
15 |
No |
? |
? |
54 |
? |
? |
? |
In this example the extension Hansel connects to the extension Gretel:
console.log("connecting to Gretel"); var myPort = browser.runtime.connect( "[email protected]" ); myPort.onMessage.addListener((message) => { console.log(`From Gretel: ${message.content}`); }); browser.browserAction.onClicked.addListener(() => { myPort.postMessage({content: "Hello from Hansel"}); });
Gretel listens for the connection and checks that the sender is really Hansel:
var portFromHansel; browser.runtime.onConnectExternal.addListener((port) => { console.log(port); if (port.sender.id === "[email protected]") { 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"}); });
Note: This API is based on Chromium's chrome.runtime
API. This documentation is derived from runtime.json
in the Chromium code.
Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.
© 2005–2021 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/onConnectExternal