Spec-Zone.ru › Web Extensions

runtime.onMessageExternal

Используйте это событие для прослушивания сообщений от других расширений или веб-страниц.

По умолчанию расширение может получать сообщения от любого другого расширения. Однако ключ externally_connectable манифеста может использоваться для ограничения связи определёнными расширениями и включения связи с веб-сайтами.

Для отправки сообщения, которое получит слушатель onMessageExternal, используйте runtime.sendMessage(), передавая идентификатор получателя в параметре extensionId.

Вместе с самим сообщением слушатель получает:

  • объект sender, предоставляющий подробности об отправителе сообщения
  • функцию sendResponse, которую слушатель может использовать для отправки ответа отправителю.

Этот API не может использоваться в скрипте содержимого.

Синтаксис

browser.runtime.onMessageExternal.addListener()
browser.runtime.onMessageExternal.removeListener(listener)
browser.runtime.onMessageExternal.hasListener(listener)

События имеют три функции:

addListener(callback)

Добавляет слушателя к этому событию.

removeListener(listener)

Прекращает прослушивание этого события. Аргумент listener — это слушатель, который нужно удалить.

hasListener(listener)

Проверяет, зарегистрирован ли слушатель listener для этого события. Возвращает true, если он прослушивает, false, в противном случае.

Синтаксис addListener

Параметры

function

Функция обратного вызова, которая вызывается при возникновении этого события. Функция получает следующие аргументы:

message

object. Само сообщение. Это объект, преобразуемый в JSON.

sender

Объект runtime.MessageSender, представляющий отправителя сообщения.

sendResponse

Функция для вызова (не более одного раза) для отправки ответа на сообщение. Функция принимает один аргумент, который может быть любым объектом, преобразуемым в JSON. Этот аргумент возвращается отправителю сообщения.

Если в одном документе есть более одного слушателя onMessageExternal, то только один может отправить ответ.

Чтобы отправить ответ синхронно, вызовите sendResponse до возвращения функции слушателя. Чтобы отправить ответ асинхронно, сделайте одно из следующих:

  • сохраните ссылку на аргумент sendResponse, и верните true из функции слушателя. Затем вы можете вызвать sendResponse после возвращения функции слушателя.
  • верните Promise из функции слушателя и разрешите промис, когда ответ будет готов.

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari на IOS Samsung Internet
onMessageExternal 26 79 54 ? 15
15.4Начиная с Safari 15.4, это событие также срабатывает в ответ на сообщение от веб-страниц, разрешённых в externally_connectable.
14Это событие срабатывает только в ответ на сообщение из содержащего приложения расширения, а не веб-страниц или других расширений.
? ? 54 ?
15.4Начиная с Safari 15.4, это событие также срабатывает в ответ на сообщение от веб-страниц, разрешённых в externally_connectable.
15Это событие срабатывает только в ответ на сообщение из содержащего приложения расширения, а не веб-страниц или других расширений.
?
return_promise Нет Нет Да ? Нет 15.4 ? ? Да ? 15.4 ?

Примеры

В этом примере расширение "blue@mozilla.org" отправляет сообщение расширению "red@mozilla.org":

// sender: browser.runtime.id === "blue@mozilla.org"

// Send a message to the extension whose ID is "red@mozilla.org"
browser.runtime.sendMessage(
    "red@mozilla.org",
    "my message"
  );
// recipient: browser.runtime.id === "red@mozilla.org"

function handleMessage(message, sender) {
  // check that the message is from "blue@mozilla.org"
  if (sender.id === "blue@mozilla.org") {
    // process message
  }
}

browser.runtime.onMessageExternal.addListener(handleMessage);

Примечание: Этот 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/onMessageExternal

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API