关于如何获取iframe中的元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于如何获取iframe中的元素相关的知识,希望对你有一定的参考价值。

今天研究了一下iframe中元素的获取,发现有些地方还是有点坑的。

首先:如果使用纯前端手段,是没有办法获取非同源的iframe中的元素的,后面会提到后端手段

一、同源环境

 1、首先在父页面获取iframe中的window,然后获取元素,根据window,不仅可以获取元素,还能调用里面的方法,前提是绑定在window上面

var ifW = $(#ifr)[0].contentWindow;

ifW.document.getElementsByClassName(wrap)

 2、在iframe中获取父页面的window

window.parent

3、那么问题来了。这里有些人可能发现,获取元素的时候,根本获取不到,或者有时候有,有时候没有,很奇怪。。。其实呢,这是因为你引入iframe的时候,不能确定iframe是否加载完成,另外具体是iframe里面的js先执行,还是父页面的js先执行,也是个问题。既然问题找到了,那就可以给  

ifW.document.getElementsByClassName(‘wrap‘)
这句代码加个延时,或者写在点击事件里面,等点击触发才去获取,这个时候就没有问题了

二、非同源
这个时候需要后端,后端只需要请求代理到需要嵌入的iframe里面,这个时候就可以变成同源访问了

 

以上是关于关于如何获取iframe中的元素的主要内容,如果未能解决你的问题,请参考以下文章

怎么获取iframe里面的元素

jquery 获取iframe里面的元素

iframe子页怎么获取父页的window对象

jquery,iframe,如何在父窗口监听,子窗口发生改变时,父窗口获取子窗口的值

如何获取页面iframe元素内容的高、宽?

如何获取iframe的父窗口的body标签啊