У меня возникли некоторые проблемы со сценарием содержимого, внедренным на одну и ту же страницу несколько раз в моем расширении Chrome.
Я внедряю скрипт содержимого со своей страницы "background.html", на вкладке изменилось:
chrome.tabs.onUpdated.addListener(function(tabId,changeInfo,tab){
chrome.tabs.getSelected(null,function(tab){
// Do some stuff
chrome.tabs.executeScript(null, { code: code}, function(result){
... и т.д.
Внутри скрипта содержимого у меня есть несколько команд console.log
Проблема в том, что когда я загружаю ОДНУ страницу, я вижу, что каждый из журналов отображается в консоли 2-4 раза.
Мне совершенно ясно, что это происходит из-за фреймов на странице, я думаю, по крайней мере ... У меня вопрос ПОЧЕМУ?
Я видел в документации, что по умолчанию для "all_frames" (массива разрешений сценария содержимого в манифесте) должно быть установлено значение "false", в результате чего сценарий содержимого вводится только в верхний фрейм страницы, но это просто не происходит!
Почему его вводят несколько раз? Мне нужно физически установить "all_frames" в false?
Во-вторых:
Есть ли способ определить, является ли страница, в которую расширение пытается внедрить скрипт содержимого, iframe или top из WITHIN на странице "background.html"?
Я пытался
if(window.top === window){ console.log('whatever'); }
И обнаружил, что это НЕ работает в 100% случаев. Даже когда у меня есть это условие для остальной части моего блока кода (вокруг chrome.tabs.executeScript ()), я все еще вижу, что скрипт содержимого вводится несколько раз ....
Любые идеи или предложения будут с благодарностью! :)