使用Chrome开发人员工具调试iframe

Bem*_*mmu 290 debugging iframe google-chrome

我想使用Chrome开发者控制台查看我的应用中的变量和DOM元素,但该应用程序存在于iframe(因为它是一个OpenSocial应用程序)中.

所以情况是:

<containing site>
 <iframe id='foo' src='different domain'>
  ... my app ...
 </iframe>
</containing site>
Run Code Online (Sandbox Code Playgroud)

有没有办法iframe从开发人员控制台访问其中发生的事情?如果我尝试这样做document.getElementById("foo").something,它就不起作用,可能是因为iframe它位于不同的域中.

我无法iframe在新标签中打开内容,因为还iframe需要能够与包含的网站进行通信.

Met*_*her 537

在Chrome的开发者工具中,顶部有一个栏,名为Execution Context Selector(h/t felipe-sabino),位于Elements,Network,Sources ...标签下,根据当前标签的上下文而变化.在控制台选项卡中,该栏中有一个下拉列表,允许您选择控制台将在其中运行的帧上下文.在此下拉菜单中选择您的框架,您将发现自己处于适当的框架环境中.:d

Chrome v59 Chrome版本59

Chrome v33 Chrome版本33

Chrome v32及更低版本 Chrome预售版32

  • 界面在版本33中已更改.我不确定它现在在哪里. (3认同)
  • 这有键盘快捷键吗? (3认同)
  • 我认为你应该改变对那个的正确答案. (2认同)
  • 唯一的问题是,您只能在更改到正确的框架后才能开始查看日志,这意味着您无法查看和检查加载时的日志和错误。有没有办法告诉浏览器不要删除和显示所有帧中的所有日志,或者至少保留并显示带有所有旧/以前输出的帧的控制台? (2认同)
  • 只是这个标签被称为["执行上下文选择器"](https://developers.google.com/web/tools/chrome-devtools/console/#execution-context)的一个FYI,因为我花了一些时间才找到:) (2认同)

Yur*_*sky 9

目前,控制台中的评估是在页面中主框架的上下文中执行的,并且它遵循与主框架本身相同的跨源策略.这意味着除非主框架可以,否则您无法访问iframe中的元素.您仍然可以使用Scripts面板设置断点并调试代码.

更新:这不再是真的.请参阅Metagrapher的回答.

  • 我已经针对WebKit提交了一个错误:https://bugs.webkit.org/show_bug.cgi?id = 42554 (3认同)
  • 这个问题仍然很突出......差不多一年之后. (3认同)