有没有办法在javascript控制台中将上下文更改为iframe?

时间:2011-11-01 00:22:21

标签: javascript iframe console firebug

我想更改webkit开发人员工具/ firebug控制台中执行的javascript的上下文,以执行它在页面上从iframe内部运行的代码。

我知道我可以通过在单独的页面上打开iframe中的页面来实现这一点,但我希望在与父框架交互的地方运行代码。

6 个答案:

答案 0 :(得分:138)

Chrome 15允许您更改控制台的范围。在控制台的底部,在清除控制台按钮旁边,有一个显示<top frame>的菜单,它会显示可用的框架列表:

enter image description here

Firefox目前正在开发similar feature

enter image description here


您还可以浏览框架using the command line

var frame = document.getElementById("frame1").contentWindow;
cd(frame);

答案 1 :(得分:20)

您可以使用<iframe>功能在window.frames[x]中执行代码。例如,

window.frames[0].runFunction()

答案 2 :(得分:6)

在今天的Chrome(第52版)中,您所要做的就是在开发工具的“元素”标签中选择iframe。您在JS控制台中运行的任何内容都将自动在所选iframe的上下文中运行。

例如,我在这里选择了一个iframe,当我在控制台中输入document.location.pathname时,它会返回iframe的src属性,而不是地址栏中的URL:

enter image description here

答案 3 :(得分:4)

对于firebug解决方案,请参阅另一个SO问题this answer。但是,不像Dennis的Chrome解决方案那样跨域工作。

编辑:对于较新版本的firebug,他们可能会修复跨域问题。

答案 4 :(得分:3)

默认情况下,脚本语句和命令的执行是在顶级窗口的上下文中完成的。如果您正在使用框架,请使用“cd()”控制台命令。

<强> CD() 不带参数调用cd()会返回顶级窗口。

<强> CD(窗口) 允许您将命令行表达式评估从网页的默认顶级窗口更改为框架窗口。

更多信息,here

答案 5 :(得分:3)

cd(document.getElementsByTagName('iframe')[0]);