Как веб-страница отправляет сообщение веб-расширению Safari?
Как код javascript на веб-странице инициирует отправку сообщения веб-расширению Safari?
Кажется
browser.runtime.connectNative()
позволит фоновому сценарию взаимодействовать с собственным приложением. В частности, данные с отслеживанием состояния могут быть отправлены во время выполнения.
Также кажется, что
browser.runtime.connect()
позволит сценарию содержимого взаимодействовать с фоновым сценарием, однако, как только сценарий содержимого присутствует, конечному пользователю выдается следующее (правильное) предупреждение:
Похоже, что не существует документированного механизма для веб-страницы для отправки данных в фоновый сценарий. Как это сделать?
Примечание: этот вопрос относится к веб-расширениям Safari, объявленным Apple для MacOS в 2020 году и iOS в 2021 году.
1 ответ
Веб-страница не имеет доступа к
Я только что провел несколько тестов (в Safari / Monterey), и мой фоновый скрипт не слышал window.postMessage с target
Если вы хотите общаться с собственным приложением, вы можете попробовать странные вещи, например, зарегистрировать настраиваемый URL-адрес или открыть порт и подключиться к нему через веб-сокет. Я предполагаю, что теоретически вы могли бы тогда заставить собственное приложение проверить фоновый скрипт, а фоновый скрипт мог бы вставить контент-скрипт, который затем мог бы общаться, кажется немного запутанным.