Расширение Safari выполнение введенного JavaScript многократно

Я скопировал код со следующего примера на сайте разработчиков Apple.

https://developer.apple.com/library/content/documentation/Tools/Conceptual/SafariExtensionGuide/MessagesandProxies/MessagesandProxies. html#//apple_ref/doc/uid/TP40009977-CH14-SW1

То, когда я выполняю расширение, оно обычно работает кроме введенного сценария, выполняется, 3 раза заставляя вывод быть записанным в console.log 3 раза. Я также поместил предупреждение в функцию doBigCalc, и она открыла 3 предупреждения.

То, почему это, происходить/, это предположило для случая?

5
задан Cœur 5 May 2018 в 13:42
поделиться

2 ответа

Вы не разговариваете со своей реализацией, но может оказаться, что проблема не в вашем коде. Ключ в понимании того, что внедренный сценарий загружен .... Из документации по внедренным сценариям :

Сценарии внедряются на страницу верхнего уровня и в любые дочерние элементы с источниками HTML, такими как iframe. Не думайте, что для каждой вкладки браузера существует только один экземпляр вашего скрипта.

6
ответ дан 14 December 2019 в 08:40
поделиться

В документации упоминается, что вы можете отправлять сообщения с помощью обработчиков событий на трех разных уровнях:

safari.application.activeBrowserWindow.activeTab.addEventListener("message", waitForMessage, false);

safari.application.activeBrowserWindow.addEventListener("message", waitForMessage, false);

safari.application.addEventListener("message", waitForMessage, false);

Но вы должны выбрать один из трех. Вы не прикрепляете слушателей событий ко всем трем, не так ли? Если да, то наверняка трижды прогонят его.

1
ответ дан 14 December 2019 в 08:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: