关于iframe的内外访问的问题
一、问题描述
当设计一个程序,前端的页面结构有多个iframe,且iframe内部是用的‘#document’来加载内部的页面时,关于iframe的内外部访问就会由于这个‘#document’而出现问题:
①在iframe外部无法选择到#document内部的元素;
②在#document内部无法选择到iframe外部(因为#document隔开了)。
二、解决办法
1.在iframe外部选择#document内部的元素:
如结构这样的文件( 为#document内部的元素):
<iframe>
#document
<html>
</html>
</iframe>
<iframe>
#document
<html>
</html>
</iframe>
<iframe>
#document
<html>
</html>
</iframe>
假设当前选择器top为iframe外部的某元素,可以使用:
top.getListiframe()[num].contentWindow.document.find('html');
此时这个选择器选中的就是某个#document内部的html.
2.在#document内部选择到iframe外部(待解决)
如果是已经在#document内部的中时,此时是iframe内部,这个时候可以像众多解决方案中所述的:
在 iframe 内部使用 window.parent 来访问包含它的父级窗口;
使用 window.top 来访问整个窗口层次结构的最顶层窗口。
这样是可以解决问题的,但当外面包了一个#document后,结构成为这样:
<iframe>
#document
<html>
<div>
</div>
</html>
</iframe>
这个时候在HTML中使用这个window.parent就没办法了(会返回undefined)。