runtime.connect()
Устанавливает соединение между различными контекстами внутри расширения.
Вы можете вызвать его:
- в скриптах контента расширения, чтобы установить соединение со скриптами фонового процесса расширения (или аналогичными скриптами с привилегиями, такими как скрипты всплывающего окна или страницы настроек).
- в скриптах фонового процесса расширения (или аналогичных скриптах с привилегиями), чтобы установить соединение с другим расширением.
Обратите внимание, что вы не можете использовать эту функцию для подключения расширения к его скриптам контента. Для этого используйте tabs.connect().
По умолчанию это соединение позволяет расширению обмениваться сообщениями с самим собой или любым другим расширением (если extensionId указано). Однако ключ externally_connectable манифеста может использоваться для ограничения связи определенными расширениями и включения связи с веб-сайтами. Соединения внутри расширения вызывают событие runtime.onConnect, соединения от других расширений или веб-страниц вызывают событие runtime.onConnectExternal.
Синтаксис
let port = browser.runtime.connect( extensionId, // optional string connectInfo // optional object )
Параметры
-
extensionIdНеобязательный -
string. Идентификатор расширения, к которому нужно подключиться. Если целевой объект явно установил ID с помощью ключа browser_specific_settings в manifest.json, тоextensionIdдолжен иметь это значение. В противном случае он должен иметь ID, сгенерированный для целевого объекта. -
connectInfoНеобязательный -
object. Детали подключения:-
nameНеобязательный -
string. Будет передан вruntime.onConnectдля процессов, ожидающих события подключения. -
includeTlsChannelIdНеобязательный -
boolean. Будет ли идентификатор канала TLS передан вruntime.onConnectExternalдля процессов, ожидающих события подключения.
-
Возвращаемое значение
runtime.Port. Порт, через который можно отправлять и получать сообщения. Событие onDisconnect порта срабатывает, если расширение не существует.
Совместимость с браузерами
| Рабочие столы | Мобильные | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari на IOS | Samsung Internet | |
connect |
26 | 14 | 45 | ? | 15 | 14 | ? | ? | 48 | ? | 15 | ? |
Примеры
Этот скрипт контента:
- подключается к скрипту фонового процесса и сохраняет
Portв переменной под названиемmyPort. - прослушивает сообщения на
myPortи регистрирует их. - отправляет сообщения скрипту фонового процесса, используя
myPort, когда пользователь щелкает по документу.
// 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!"}); });
Соответствующий скрипт фонового процесса:
- прослушивает попытки подключения от скрипта контента.
- при получении попытки подключения:
- сохраняет порт в переменную под названием
portFromCS. - отправляет скрипту контента сообщение, используя порт.
- начинает прослушивать сообщения, полученные по порту, и регистрирует их.
- сохраняет порт в переменную под названием
- отправляет сообщения скрипту контента, используя
portFromCS, когда пользователь щелкает по действию расширения в браузере.
// 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!"}); });
Примечание: Этот API основан на API chrome.runtime Chromium. Данная документация получена из runtime.json кода Chromium.
© 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/connect