我想更改在webkit开发人员工具/ firebug控制台中执行的JavaScript的上下文,以执行其代码,就像它从页面上的iframe中运行一样。有没有办法在javascript控制台中将上下文更改为iframe?
我知道我可以通过在单独的页面上打开iframe中的页面来做到这一点,但我想在与父框架交互的位置运行代码。
我想更改在webkit开发人员工具/ firebug控制台中执行的JavaScript的上下文,以执行其代码,就像它从页面上的iframe中运行一样。有没有办法在javascript控制台中将上下文更改为iframe?
我知道我可以通过在单独的页面上打开iframe中的页面来做到这一点,但我想在与父框架交互的位置运行代码。
Chrome 15允许您更改控制台的范围。在控制台上,旁边的清除控制台按钮的底部,有一个菜单,上面写着<top frame>
,这将给可用帧列表:
Firefox有一个similar feature目前正在开发中:
:您也可以跨框架using the command line导航
var frame = document.getElementById("frame1").contentWindow;
cd(frame);
您可以使用window.frames[x]
功能执行的代码。例如,
window.frames[0].runFunction()
如果FireBug是你选择的武器,一个不错的选择。谢谢。 –
你会如何执行jQuery命令之类的函数之外的代码?或者,如果您想在某个框架下获取DOM元素的引用,那么针对该元素执行代码? – David
对于萤火虫解决方案,请参阅this answer关于另一个SO问题。但是,不像丹尼斯的Chrome解决方案那样可以跨域使用。
编辑:更新版本的萤火虫他们可能有固定的跨域问题。
默认情况下脚本语句和命令的执行是在顶层窗口的上下文中完成的。如果您使用的是帧,请使用“cd()”控制台命令。
cd() 不带参数调用cd()会返回到顶层窗口。
cd(窗口) 允许您将命令行表达式评估从网页的默认顶级窗口更改为框架的窗口。
更多信息,here
似乎只与IE相关,但不适用于webkit .. – Cherniv
这正是我所期待的。 (它适用于Firefox) 谢谢。 – user2410595
cd(document.getElementsByTagName('iframe')[0]);
欢迎来到Stack Overflow!请考虑编辑您的帖子,以添加更多关于您的代码的解释以及为什么它可以解决问题。一个主要包含代码的答案(即使它正在工作)通常不会帮助OP了解他们的问题。 – SuperBiasedMan
谢谢!对于firefox来说,这是一种奇怪的方式,但我想“cd(iframe)”是您在控制台中输入以切换上下文的内容。我给了你一个+1 b/c你为我节省了大量的头撞,但你应该真正抛光这个帖子并解释它! –
你总是可以用'window.frames [x]'方式执行代码。只需追加任何你想要的命令。 I.E. 'window.frames [0] .runFunction()' – Ktash
@Ktash,你可能想让这个答案? – Muhd
我如何在IE中做同样的事情?如果元素位于内部IFRAME中,我发现使用$在控制台窗口中选择一个元素非常困难。请帮忙。 – tarekahf