在我的Chrome扩展中,一个内容脚本被多次注入到同一个页面中,我遇到了一些问题。
我从我的"background.html“页面注入内容脚本,在Tab change上:
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){...etc
在内容脚本中,我有一些console.log命令
问题是,当我加载一个页面时,我看到每个日志在控制台中出现2-4次。
我很清楚这是由于页面中的iframe造成的,我认为至少...我的问题是为什么?
我在文档中看到,默认情况下,"all_frames“(清单中的内容脚本权限数组)应该设置为"false”,导致内容脚本只被注入到页面的顶部框架,但这根本不会发生!
为什么它会被多次注入?是否需要将"all_frames“物理设置为false?
其次:
有没有办法从"background.html“页面中判断扩展试图注入内容脚本的页面是iframe还是top?
我试过了
if(window.top === window){ console.log('whatever'); }发现它并不是100%有效的。即使我在代码块的其余部分(围绕chrome.tabs.executeScript() )使用了该条件,我仍然多次看到内容脚本被注入……
任何想法或建议都将非常感谢!:)
发布于 2011-10-20 09:17:54
每次选项卡的状态更改时,都会触发onUpdated。这包括加载和完成加载的时间,这解释了许多日志语句。您需要检查更改的内容( URL更改、加载等)每次触发事件时。
https://stackoverflow.com/questions/7829895
复制相似问题