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

tabs.sendMessage()

我们的志愿者还没有将这篇文章翻译为 中文 (简体)加入我们帮助完成翻译!

Sends a single message from the add-on's background scripts (or other privileged scripts, such as popup scripts or options page scripts) and any content scripts that belong to this add-on and are running in the specified tab.

The message will be received in the content scripts by any listeners to the runtime.onMessage event. Listeners may then optionally send a response back to the background script using the sendResponse argument.

Syntax

chrome.tabs.sendMessage(
  tabId,                   // integer
  message,                 // any
  options,                 // optional object
  function(response) {...} // optional function
)

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

Parameters

tabId
integer. ID of the tab whose content scripts we want to send a message to.
message
any. An object that can be serialized to JSON.
optionsOptional
object.
frameIdOptional
integer. Sends the message to a specific frame identified by frameId instead of all frames in the tab.
responseCallbackOptional
function. If you're expecting the receiver to send you a response using sendResponse (see runtime.onMessage), pass a callback function here. The function will be called with the response.
response
any. The JSON response object sent by the handler of the message in the content script. If an error occurs while connecting to the specified tab, 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 No 33

Examples

Here's an example of a background script that sends a message to the content scripts running in the active tab when the user clicks the browser action. The background script also expect the content script to send a response:

// background-script.js

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

function sendMessageToTab(tabs) {
  if (tabs.length > 0) {
    chrome.tabs.sendMessage(
      tabs[0].id,
      {greeting: "hi from background script"},
      handleResponse
    );
  }
}

chrome.browserAction.onClicked.addListener(function() {
  chrome.tabs.query({currentWindow: true, active: true},
                    sendMessageToTab);
});

Here's the corresponding content script:

// content-script.js

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

chrome.runtime.onMessage.addListener(handleMessage);

Example add-ons

Acknowledgements

This API is based on Chromium's chrome.tabs API. This documentation is derived from tabs.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.

文档标签和贡献者

 此页面的贡献者: Makyen, wbamberg
 最后编辑者: Makyen,