Chrome扩展-内容脚本被注入多次每单页加载



我有一些问题的内容脚本被注入到同一页多次在我的Chrome扩展

我从我的"background.html"页面注入内容脚本,在Tab更改:

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次。

我很清楚,这是因为页面内的iframe发生的,我认为至少…我的问题是为什么?

我在文档中看到,"all_frames"(manifest中的内容脚本权限数组)应该默认设置为"false",导致内容脚本只被注入到页面的顶部框架,但这根本没有发生!

为什么要多次注射?我是否需要将"all_frames"设置为false?

其次:

是否有任何方法来告诉页面,扩展试图注入的内容脚本是一个iframe或顶部从"背景。html"页面?

我试过了

if(window.top === window){ console.log('whatever'); }

发现它并不是100%有效。即使我在代码块的其余部分(在chrome.tabs.executeScript()周围)设置了该条件,我仍然看到多次注入内容脚本....

任何想法或建议都将非常感谢!:)

onUpdated在每次选项卡状态改变时触发。这包括加载完成加载,这解释了许多日志语句。您需要在每次事件触发时检查发生了什么变化(URL改变了,它被加载了,等等)。

最新更新