Call this function to set up a connection between the extension's background scripts (or other privileged scripts, such as popup scripts or options page scripts) and any
content scripts
that belong to this extension and are running in the specified tab. This function returns a
runtime.Port
对象。
When this is called, the
runtime.onConnect
event will be fired in any content script belonging to this extension that are running in the specified tab. The event listener will be passed another
runtime.Port
object. The two sides can then use the
Port
objects to exchange messages.
更多细节,见 connection-based messaging . You can message without creating a connection, for advice on choosing between the options, see Choosing between one-off messages and connection-based messaging .
browser.tabs.connect(
tabId, // integer
connectInfo // optional object
)
tabId
integer
. ID of the tab whose content scripts we want to connect to.
connectInfo
可选
An object with the following properties:
名称
可选
string
. Will be passed into
runtime.onConnect
event listeners in content scripts belonging to this extension and running in the specified tab.
frameId
可选
integer
. Open a port to a specific frame identified by
frameId
instead of all frames in the tab.
runtime.Port
. A port that can be used to communicate with the content scripts running in the specified tab.
In this example a background script listens for a click on a
browser action
, then connects to the currently active tab, then sends a message using the
Port
that's returned from
connect()
:
function connectToTab(tabs) {
if (tabs.length > 0) {
var examplePort = browser.tabs.connect(
tabs[0].id,
{name: "tabs-connect-example"}
);
examplePort.postMessage({greeting: "Hi from background script"});
}
}
function onError(error) {
console.log(`Error: ${error}`);
}
browser.browserAction.onClicked.addListener(function() {
var gettingActive = browser.tabs.query({
currentWindow: true, active: true
});
gettingActive.then(connectToTab, onError);
});
BCD tables only load in the browser
注意:
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.
最后修改: , 由 MDN 贡献者