我想更改webkit开发人员工具/ firebug控制台中执行的javascript的上下文,以执行它在页面上从iframe内部运行的代码。
我知道我可以通过在单独的页面上打开iframe中的页面来实现这一点,但我希望在与父框架交互的地方运行代码。
答案 0 :(得分:138)
Chrome 15允许您更改控制台的范围。在控制台的底部,在清除控制台按钮旁边,有一个显示<top frame>
的菜单,它会显示可用的框架列表:
Firefox目前正在开发similar feature:
您还可以浏览框架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:
答案 3 :(得分:4)
对于firebug解决方案,请参阅另一个SO问题this answer。但是,不像Dennis的Chrome解决方案那样跨域工作。
编辑:对于较新版本的firebug,他们可能会修复跨域问题。
答案 4 :(得分:3)
默认情况下,脚本语句和命令的执行是在顶级窗口的上下文中完成的。如果您正在使用框架,请使用“cd()”控制台命令。
<强> CD()强> 不带参数调用cd()会返回顶级窗口。
<强> CD(窗口)强> 允许您将命令行表达式评估从网页的默认顶级窗口更改为框架窗口。
更多信息,here
答案 5 :(得分:3)
cd(document.getElementsByTagName('iframe')[0]);