Please note, this is a STATIC archive of website developer.mozilla.org from 03 Nov 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

runtime.sendMessage()

Sends a single message to event listeners within your extension or a different extension.

It works just like runtime.connect, but only sends a single message, with an optional response.

If sending to your extension, the runtime.onMessage event will be fired in each page. If sending to a different extension,  runtime.onMessageExternal will be fired.

Note: Extensions cannot send messages to content scripts using this method. To send messages to content scripts, use tabs.sendMessage.

Syntax

chrome.runtime.sendMessage(
  extensionId,             // optional string
  message,                 // any
  options,                 // optional object
  function(response) {...} // optional function
)

This API is also available as browser.runtime.sendMessage() in a version that returns a promise.

Parameters

extensionIdOptional
string. The ID of the extension to send the message to. If omitted, the message will be sent to your own extension.
message
any. An object that can be serialized to JSON.
optionsOptional
object.
includeTlsChannelIdOptional
boolean. Whether the TLS channel ID will be passed into runtime.onMessageExternal for processes that are listening for the connection event.
functionOptional
Callback function. The function is passed the following arguments:
response
any. The JSON response object sent by the handler of the message. If an error occurs while connecting to the extension, the callback will be called with no arguments and runtime.lastError will be set to the error message.

Browser compatibility

Chrome Edge Firefox Firefox for Android Opera
Basic support Yes Yes 45.0 48.0 33

Compatibility notes

Edge

  • The 'options' parameter is not supported.

Examples

Here's a content script that sends a message to the background script when the user clicks the content window. The message payload is {greeting: "greeting from the content script"}, and the sender also expects to get a response, which is handled in the handleResponse callback:

// content-script.js

function handleResponse(message) {
  console.log("message from the background script: " +
    message.response);
}

function notifyBackgroundPage(e) {
  chrome.runtime.sendMessage(
    {greeting: "greeting from the content script"},
    handleResponse
  );
}

window.addEventListener("click", notifyBackgroundPage);

The corresponding background script looks like this:

// background-script.js

function handleMessage(request, sender, sendResponse) {
  console.log("message from the content script: " +
    request.greeting);
  sendResponse({response: "response from background script"});
}

chrome.runtime.onMessage.addListener(handleMessage);

Example add-ons

Acknowledgements

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.

Document Tags and Contributors

 Contributors to this page: Makyen, chrisdavidmills, wbamberg
 Last updated by: Makyen,