Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在页面上将Safari 6控制台的上下文更改为iframe_Javascript_Safari_Console_Web Inspector - Fatal编程技术网

Javascript 在页面上将Safari 6控制台的上下文更改为iframe

Javascript 在页面上将Safari 6控制台的上下文更改为iframe,javascript,safari,console,web-inspector,Javascript,Safari,Console,Web Inspector,我知道,让我们使用下拉菜单选择控制台执行的上下文,Firebug让我们将cd()放入iframe。我不知道如何在Safari的控制台中更改上下文。有人知道怎么做吗 Iframe元素本身属于控制台中的Window类型 <iframe id="frame" src="about:blank"/> 请注意,“frame”是文档的缩写。getElementById(“frame”)Safari与chrome和firefox不同,它不支持此功能,唯一的选择似乎是从控制台访问window对象。

我知道,让我们使用下拉菜单选择控制台执行的上下文,Firebug让我们将
cd()
放入iframe。我不知道如何在Safari的控制台中更改上下文。有人知道怎么做吗

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

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

请注意,“frame”是
文档的缩写。getElementById(“frame”)

Safari与chrome和firefox不同,它不支持此功能,唯一的选择似乎是从控制台访问window对象。正如您正确指出的,这将触发跨域策略问题,但是如果您在mac上运行(由于某些原因,这在windows上不起作用),您可以使用

open -a '/Applications/Safari.app' --args --disable-web-security
绕过这个。接下来在jsbin中,您可以使用

window.frames[0]
访问页面的窗口。据我所知,windows没有类似的解决方案

Safari.exe --disable-web-security

显然不起作用。

不幸的是,这不适用于具有不同于主机页的域的iFrame。这就是为什么firebug
cd
命令和用于更改“上下文”的Chrome下拉菜单如此有用的原因…确定吗?我用一个不同的URL尝试了这个,它成功了。仅在发布时,我将其更改为:blank.Yup:--当我打开Safari控制台并键入:
document.getElementById(“test-iframe”).document
我得到
未定义的
:try
document.getElementById(“test-iframe”).contentDocument
document.getElementById(“test-iframe”).contentWindow
。此外,您还可以将框架的所有部分打印到控制台:
for(document.getElementById(“test-iframe”))console.log(key)以查找所有有用的属性。不,我仍然无法访问iframe中的任何内容。你确定你在使用Safari 6.x吗?
Safari.exe --disable-web-security