使用Chrome开发人员工具debuggingiframe
我想使用Chrome开发者控制台查看我的应用程序中的variables和DOM元素,但该应用程序存在于iframe中(因为它是OpenSocial应用程序)。
所以情况是:
<containing site> <iframe id='foo' src='different domain'> ... my app ... </iframe> </containing site>
有没有什么办法从开发者控制台访问iframe中发生的事情? 如果我尝试去做document.getElementById(“foo”)。它不起作用,可能是因为iframe在不同的域中。 我无法在新选项卡中打开iframe内容,因为iframe也需要能够与包含的网站进行通话。
在Chrome中的开发者工具中,顶部有一个栏,名为Execution Context Selector
(h / t felipe-sabino ),位于元素,networking,源…选项卡下方,根据上下文当前标签。 在“控制台”选项卡中,在该栏中有一个下拉列表,允许您select控制台将在其中运行的框架上下文。 在这个下拉框中select你的框架,你会发现自己在适当的框架上下文。 :d
Chrome v59
Chrome v33
Chrome v32及更低版本
目前,控制台中的评估是在页面主框架的上下文中执行的,并且遵循与主框架本身相同的跨源策略。 这意味着你不能访问iframe中的元素,除非主框架可以。 尽pipe如此,您仍然可以在“脚本”面板中设置断点并debugging代码。
更新:这不再是真的。 看到Metagrapher的答案 。
当iFrame像这样指向你的网站时:
<html> <head> <script type="text/javascript" src="/jquery.js"></script> </head> <body> <iframe id="my_frame" src="/wherev"></iframe> </body> </html>
您可以通过这种方式访问iFrame DOM。
var iframeBody = $(window.my_frame.document.getElementsByTagName("body")[0]); iframeBody.append($("<h1/>").html("Hello world!"));
在我相当复杂的情况下,如何在Chrome中执行此操作的接受答案不适用于我。 您可能想尝试使用Firefoxdebugging器(Firefox开发人员工具的一部分),它显示所有“来源”,包括那些是iFrame的一部分
- 如何在Chrome“JavaScript控制台”中使用“严格”模式
- 如何在Google Chrome浏览器JavaScript控制台中打印debugging消息?
- 在Chrome开发者工具中,== $ 0(double等于零美元)是什么意思?
- 如何在Chrome Developer Tools中search所有加载的脚本?
- jQuery`.is(“:visible”)`不能在Chrome中工作
- 为什么一个自引用的iframe不是无限循环的,会导致我的机器崩溃?
- 每次点击Chrome扩展程序图标时运行脚本
- 在Chrome中停用开发者模式扩展程序
- 在Google Chrome中debuggingWebSocket