Расширение Chrome - скрипт содержимого вводится несколько раз при загрузке одной страницы

StackOverflow https://stackoverflow.com/questions/7829895

Вопрос

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

Я вставляю сценарий содержимого со своей страницы "background.html" при изменении вкладки:

родовое слово

... и т. д.

Внутри скрипта содержимого у меня есть несколько команд console.log

Проблема в том, что когда я загружаю ОДНУ страницу, я вижу, что каждый журнал отображается в консоли 2-4 раза.

Мне довольно ясно, что это происходит из-за фреймов на странице, по крайней мере, я думаю ... Мой вопрос: ПОЧЕМУ?

Я видел в документации, что "all_frames" (массив разрешений сценария содержимого в манифесте) по умолчанию должен иметь значение "false", в результате чего сценарий содержимого вводится только в верхний фрейм страницы, но это просто не происходит!

Почему его вводят несколько раз? Нужно ли мне физически устанавливать для all_frames значение false?

Во-вторых:

Есть ли способ узнать, является ли страница, на которую расширение пытается внедрить сценарий содержимого, iframe или верхнюю часть страницы "background.html"?

Я пробовал

родовое слово

И обнаружил, что он НЕ работает в 100% случаев. Даже когда у меня есть это условие для остальной части моего блока кода (около chrome.tabs.executeScript ()), я все равно вижу, что сценарий содержимого вводится несколько раз ....

Мы будем благодарны за любые идеи или предложения! :)

Это было полезно?

Решение

onUpdated срабатывает при каждом изменении состояния вкладки.В том числе, когда выполняется загрузка и загрузка , что объясняет многие операторы журнала. Вам необходимо проверять, что изменилось (URL-адрес изменился, он загружен и т. Д.) Каждый раз при возникновении события.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top