Как предотвратить многократное внедрение скрипта контента при отключении / повторном включении расширения 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.
}
}