Расширение Chrome - скрипт содержимого вводится несколько раз при загрузке одной страницы
-
27-10-2019 - |
Вопрос
У меня возникают проблемы с тем, что скрипт содержимого несколько раз вводится на одну и ту же страницу в моем расширении Chrome.
Я вставляю сценарий содержимого со своей страницы "background.html" при изменении вкладки:
родовое слово... и т. д.
Внутри скрипта содержимого у меня есть несколько команд console.log
Проблема в том, что когда я загружаю ОДНУ страницу, я вижу, что каждый журнал отображается в консоли 2-4 раза.
Мне довольно ясно, что это происходит из-за фреймов на странице, по крайней мере, я думаю ... Мой вопрос: ПОЧЕМУ?
Я видел в документации, что "all_frames" (массив разрешений сценария содержимого в манифесте) по умолчанию должен иметь значение "false", в результате чего сценарий содержимого вводится только в верхний фрейм страницы, но это просто не происходит!
Почему его вводят несколько раз? Нужно ли мне физически устанавливать для all_frames значение false?
Во-вторых:
Есть ли способ узнать, является ли страница, на которую расширение пытается внедрить сценарий содержимого, iframe или верхнюю часть страницы "background.html"?
Я пробовал
родовое словоИ обнаружил, что он НЕ работает в 100% случаев. Даже когда у меня есть это условие для остальной части моего блока кода (около chrome.tabs.executeScript ()), я все равно вижу, что сценарий содержимого вводится несколько раз ....
Мы будем благодарны за любые идеи или предложения! :)
Решение
onUpdated
срабатывает при каждом изменении состояния вкладки.В том числе, когда выполняется загрузка и загрузка , что объясняет многие операторы журнала.
Вам необходимо проверять, что изменилось (URL-адрес изменился, он загружен и т. Д.) Каждый раз при возникновении события.