将 Safari 6 控制台的上下文切换为页面中的 iframe

9

我知道Chrome可以通过下拉菜单选择控制台执行的上下文,Firebug可以使用cd()进入iframe。但是我无法弄清楚如何在Safari的控制台中更改上下文。有人知道怎么做吗?

2个回答

9

Safari与Chrome和Firefox不同,对此功能没有真正的支持,唯一的选择似乎是从控制台访问窗口对象。正如您正确指出的那样,这将触发跨域策略问题,但是只要您在Mac上运行(由于某种原因,这在Windows上不起作用),您可以使用

open -a '/Applications/Safari.app' --args --disable-web-security

为了绕过这个问题,你可以在你的jsbin中使用类似以下的东西。
window.frames[0]

访问页面窗口。据我所见,Windows 没有类似的解决方案,因为

Safari.exe --disable-web-security

显然不起作用。


0

Iframe 元素本身在控制台中属于 Window 类型

<iframe id="frame" src="about:blank"/>

在Safari控制台中,您只需使用以下内容即可工作:
frame.document.write('bla');

请注意,'frame' 是 document.getElementById('frame') 的缩写。

不幸的是,这对于与主机页面不同域的iframe无效。这就是为什么Firebug的“cd”命令和Chrome下拉菜单中更改“上下文”的功能如此有用的原因... - Aaron Gibralter
确定吗?我用不同的URL尝试过,它可以工作。只是为了发布,我将其更改为about:blank。 - mr.VVoo
不行,我仍然无法访问iframe内的任何内容。你确定你正在使用Safari 6.x吗? - Aaron Gibralter
这是程序相关的内容,请查看以下屏幕截图:http://imageshack.us/photo/my-images/833/bildschirmfoto20130221u.png/ - mr.VVoo
让我们在聊天中继续这个讨论:http://chat.stackoverflow.com/rooms/24935/discussion-between-aaron-gibralter-and-mr-vvoo - Aaron Gibralter
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接