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

Если 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 ответ

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

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

        //sample function
        function foo() 
        {
           if (window.top === window)  //main-frame only
           { 
            //place code here.
           }
        }
Другие вопросы по тегам