【发布时间】:2013-02-19 16:41:52
【问题描述】:
我知道Chrome 让您使用下拉菜单选择控制台执行的上下文,而 Firebug 让您将cd() 放入 iframe。我不知道如何更改 Safari 控制台中的上下文。有谁知道如何做到这一点?
【问题讨论】:
标签: javascript safari console web-inspector
我知道Chrome 让您使用下拉菜单选择控制台执行的上下文,而 Firebug 让您将cd() 放入 iframe。我不知道如何更改 Safari 控制台中的上下文。有谁知道如何做到这一点?
【问题讨论】:
标签: javascript safari console web-inspector
Safari 与 chrome 和 firefox 不同,没有真正支持此功能,唯一的选择似乎是从控制台访问窗口对象。正如您正确指出的那样,这将触发跨域策略问题,但是如果您在 mac 上运行(这在 Windows 上由于某种原因不起作用),您可以使用
open -a '/Applications/Safari.app' --args --disable-web-security
绕过这个。接下来在你的 jsbin 上,你可以使用类似
的东西window.frames[0]
访问页面的窗口。据我所知,windows没有类似的解决方案,因为
Safari.exe --disable-web-security
显然不起作用。
【讨论】:
Iframe 元素本身在控制台中属于 Window 类型
<iframe id="frame" src="about:blank"/>
在 Safari 控制台中,您只需使用
frame.document.write('bla');
请注意“frame”是document.getElementById('frame')的简写
【讨论】:
cd 命令和用于更改“上下文”的 Chrome 下拉菜单如此有用...
document.getElementById("test-iframe").document 我得到undefined:cl.ly/image/0N0v1l223w1m
document.getElementById("test-iframe").contentDocument 或document.getElementById("test-iframe").contentWindow。此外,您可以将框架的所有部分打印到控制台:for(var key in document.getElementById("test-iframe")) console.log(key);以便找到所有有用的属性。