Как предотвратить многократное внедрение скрипта контента при отключении / повторном включении расширения safari? - PullRequest
0 голосов
/ 13 июня 2019

Если Safari, я получаю несколько копий скрипта содержимого, если отключаю, а затем снова включаю расширение в одном сеансе.

После обновления страницы все возвращается на круги своя. В Chrome есть концепция «недействительного контекста расширения», которого в Safari, похоже, не хватает.

Сценарий содержимого (script.js) регистрируется путем добавления его в приложение расширения Safari в xcode под ключом SFSafariContentScript . Согласно https://developer.apple.com/documentation/safariservices/safari_app_extensions/injecting_a_script_into_a_webpage?language=objc, скрипт содержимого всегда внедряется при загрузке расширения. Есть ли способ избежать повторного введения препарата, если он был введен впервые?

Я провел довольно много исследований в Интернете, но не могу найти решение. Любые предложения приветствуются!

1 Ответ

0 голосов
/ 04 июля 2019

Это поведение по умолчанию. если веб-страница имеет дочерние фреймы, скрипт будет внедрен во все фреймы.

Но вы можете предотвратить несколько вызовов, проверив, является ли его основной кадр.

        //sample function
        function foo() 
        {
           if (window.top === window)  //main-frame only
           { 
            //place code here.
           }
        }
...