Как веб-страница отправляет сообщение веб-расширению Safari?

Как код javascript на веб-странице инициирует отправку сообщения веб-расширению Safari?

Кажется browser.runtime.connectNative()позволит фоновому сценарию взаимодействовать с собственным приложением. В частности, данные с отслеживанием состояния могут быть отправлены во время выполнения.

Также кажется, что browser.runtime.connect() позволит сценарию содержимого взаимодействовать с фоновым сценарием, однако, как только сценарий содержимого присутствует, конечному пользователю выдается следующее (правильное) предупреждение:

Похоже, что не существует документированного механизма для веб-страницы для отправки данных в фоновый сценарий. Как это сделать?

Примечание: этот вопрос относится к веб-расширениям Safari, объявленным Apple для MacOS в 2020 году и iOS в 2021 году.

1 ответ

Веб-страница не имеет доступа к методы, поэтому ваша единственная ставка - использовать . В MDN что-то написано об использовании этого в расширениях, однако явно не сказано, должно это работать или нет.

Я только что провел несколько тестов (в Safari / Monterey), и мой фоновый скрипт не слышал window.postMessage с target с веб-страницы (без сценария содержимого, только в javascript со страницы), так что дорога кажется закрытой.

Если вы хотите общаться с собственным приложением, вы можете попробовать странные вещи, например, зарегистрировать настраиваемый URL-адрес или открыть порт и подключиться к нему через веб-сокет. Я предполагаю, что теоретически вы могли бы тогда заставить собственное приложение проверить фоновый скрипт, а фоновый скрипт мог бы вставить контент-скрипт, который затем мог бы общаться, кажется немного запутанным.

Другие вопросы по тегам