首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Chrome扩展-每个页面加载多次注入内容脚本

Chrome扩展-每个页面加载多次注入内容脚本
EN

Stack Overflow用户
提问于 2011-10-20 08:44:17
回答 1查看 2.9K关注 0票数 3

在我的Chrome扩展中,一个内容脚本被多次注入到同一个页面中,我遇到了一些问题。

我从我的"background.html“页面注入内容脚本,在Tab change上:

代码语言:javascript
复制
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?

我试过了

代码语言:javascript
复制
if(window.top === window){ console.log('whatever'); }

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-20 09:17:54

每次选项卡的状态更改时,都会触发onUpdated。这包括加载和完成加载的时间,这解释了许多日志语句。您需要检查更改的内容( URL更改、加载等)每次触发事件时。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7829895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档