Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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可以从父页面访问iframe元素吗?_Javascript_Jquery_Html - Fatal编程技术网

javascript可以从父页面访问iframe元素吗?

javascript可以从父页面访问iframe元素吗?,javascript,jquery,html,Javascript,Jquery,Html,我在一个页面上有iframe,iframe和父页面在不同的域中,父页面上的javascript代码可以访问此iframe中的元素吗?是的,通过文档.frames数组可以访问iframe。最简单的方法是通过窗口上的frames对象,如下所示: window.frames[0].document.getElementById('ElementId').style.backgroundColor="#000"; 如果页面来自不同的域,则浏览器安全沙箱应该阻止此类访问。当这两个页面来自同一个域的不同子

我在一个页面上有iframe,iframe和父页面在不同的域中,父页面上的javascript代码可以访问此iframe中的元素吗?

是的,通过
文档.frames
数组可以访问iframe。

最简单的方法是通过窗口上的frames对象,如下所示:

window.frames[0].document.getElementById('ElementId').style.backgroundColor="#000";

如果页面来自不同的域,则浏览器安全沙箱应该阻止此类访问。当这两个页面来自同一个域的不同子域时,它可能会工作,但在不同浏览器(甚至可能是同一浏览器的版本)之间可能会有所不同


访问子iframe可能会起作用,但另一种方式肯定不会起作用。

如果两个域完全分离,则不可能使用Chrome——禁用web安全参数……;)

使用jQuery.postMessage插件


浏览器测试了Internet Explorer 6-8、Firefox 3、Safari 3-4、Chrome、Opera 9。

您可以使用CORS来实现这一点,特别是更改“document.domain”值以匹配父级和子级。但是,请理解此操作的安全性影响,并且您需要访问父文档和子文档的源代码

如果您拥有多个子域,这一点尤其重要。
我一直在使用这种技术,所以我知道它是有效的,即使使用SSL也是如此

我说的是访问子iframe元素,它应该可以工作吗?这些是我正在创建的站点,希望它们都调用一个服务。您最好使用XMLHttpRequest对象来调用您的服务。然后,所有帧都可以自己访问服务,它们之间不需要任何通信。您忽略了问题的x域部分,这一部分更为相关。另外document.frames是非标准的,请使用具有更广泛支持的window.frames-1首先,它是window.frames。其次,如果页面在不同的域上,它仍然不起作用。如果子框架在不同的域中,您将得到
错误:访问属性“document”的权限被拒绝
问题表明iframe在另一个域上,因此这不起作用。只有在您控制两个域时,才可以使用easyxdm。