通常情况下,当我在Chrome中使用开发者工具的Console
标签时,我会看到如下所示的iFrame列表:
但是,在我安装了某个扩展程序后,我在Console
标签中的多个iFrame下方看到了扩展程序ID,如下所示:
有谁能告诉我这是什么意思?我想那些iFrames'父母是延伸,但我不确定。如果我错了,有人可以纠正我吗?
此外,如果那些iFrames' parent是扩展名有没有办法跟踪它们?跟踪它们我的意思是说我想为所有这些帧运行命令window.open = function () { debugger; }
,我可以这样做吗?
答案 0 :(得分:1)
您正在查看的是扩展内容脚本。它们实际上是作为每个标签的子项加载的(或者在此扩展名的情况下)每个iFrame。
如果您在控制台中选择一个,请执行以下操作:
> chrome.runtime.getManifest()
最相关的输出是:
{ ...
content_scripts: Array[1]
0: Object
all_frames: true
js: Array[#]
0: "content.js"
...
在这里,all_frames是你在每个帧后重复看到扩展名而不是在标签主窗口下重复一次的原因。
(可能还有背景,您可以在设置的扩展程序列表中查看。)
要调试内容脚本,实际上在Developer Console-> Sources下有一个选项卡。在这里,我在内容脚本初始化期间(在使用“{}”图标扩展代码之后)在特定行上设置了断点:
更改iFrame或重新加载整个窗口时,每个内容脚本在此时暂停,同时开发人员工具处于打开状态。
有一些content script limits,所以你不应该在一个iFrame中任意执行代码,尽管有一个消息传递系统,如果专门设置了监听器,它可以实现类似的结果。