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

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

一、同源环境

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

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

ifW.document.getElementsByClassName('wrap')

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

window.parent

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

ifW.document.getElementsByClassName('wrap')
这句代码加个延时,或者写在点击事件里面,等点击触发才去获取,这个时候就没有问题了 二、非同源
可以使用 HTML5的api , window.postMessage 在 iframe 里面,向父页面发送消息
window.top.postMessage("close",'*');

  

在父页面,,监听消息
window.addEventListener("message", function(event){
var origin = event.origin || event.originalEvent.origin; }, false);

当然也可以在 iframe里面监听事件, 父页面发送消息


												

关于如何获取iframe中的元素的更多相关文章

  1. Js/Jquery获取iframe中的元素

    转载: Js/Jquery获取iframe中的元素 - - ITeye技术网站http://java-my-life.iteye.com/blog/1275205 在web开发中,经常会用到ifram ...

  2. js 获取iframe中的元素

    今天要修改编辑器插件中的元素遇到的问题 jquery 在父窗口中获取iframe中的元素 1.Js代码 格式:$("#iframe的ID").contents().find(&qu ...

  3. 获取iframe中的元素

    父窗口中获取iframe中的元素 var ifr = document.getElementById('suggustion').contentWindow.document.body; 在ifram ...

  4. Js/Jquery获取iframe中的元素 在Iframe中获取父窗体的元素方法

    在web开发中,经常会用到iframe,难免会碰到需要在父窗口中使用iframe中的元素.或者在iframe框架中使用父窗口的元素 js 在父窗口中获取iframe中的元素  1. 格式:window ...

  5. 【学习】如何用jQuery获取iframe中的元素

    (我的博客网站中的原文:http://www.xiaoxianworld.com/archives/292,欢迎遇到的小伙伴常来瞅瞅,给点评论和建议,有错误和不足,也请指出.) 说实在的,以前真的很少 ...

  6. 父窗口中获取iframe中的元素

    js 在父窗口中获取iframe中的元素 1. 格式:window.frames["iframe的name值"].document.getElementById("ifr ...

  7. 在iframe窗体内 获取父级的元素;;在父窗口中获取iframe中的元素

    在iframe中获取父窗口的元素 $(‘#父窗口中的元素ID’, parent.document).click(); 在父窗口中获取iframe中的元素 $(“#iframe的ID”).content ...

  8. 获取父窗口元素或者获取iframe中的元素(相同域名下)

    jquery方法 在父窗口中获取iframe中的元素 //方法1 $("#iframe的ID").contents().find("iframe中的元素"); ...

  9. js获取iframe中的元素以及在iframe中获取父级的元素(包括iframe中不存在name和id的情况)

      第一种情况:iframe中不存在name和id的方法:(通过contentWindow获取) var iframe = document.getElementsByTagName('iframe' ...

随机推荐

  1. Python有哪些高大上的项目?

    ​Python作为程序员的宠儿,得到了越来越多人的关注,使用Python进行应用程序开发的越来也多.那么,Python有哪些高大上的项目?这里有十个: 1.NuPIC 它是一个以HTM学习算法为工具的 ...

  2. Java jdk 快速配置

    JAVA_HOME C:\Program Files\Java\jdk1.8.0_92   Path %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;   CLASSPATH ...

  3. 关于JS正则——你知道多少?

    正则表达式 1. 使用正则 创建正则表达式有两种方式,一种是以字面量方式创建,另一种是使用RegExp构造函数来创建. var expression = / pattern / flags; var ...

  4. 【Alpha阶段】第四次 Scrum Meeting

    每日任务 1.本次会议为第 四次 Meeting会议: 2.本次会议在上午09:35,大课间休息时间在禹州楼召开,召开本次会议为20分钟,分析完善接下来的任务: 一.今日站立式会议照片 二.每个人的工 ...

  5. 201521123029《Java程序设计》第六周学习总结

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...

  6. 201521123088《JAVA程序设计》第5周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 2. 书面作业 阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过?哪句会出 ...

  7. 201521123074 《Java程序设计》第3周学习总结

    1.本周学习总结 用百度脑图画了一张,点开图片全屏就可以看清楚了 脑图链接 2.书面作业 Q1.代码阅读 以下代码可否编译通过?哪里会出错?为什么?尝试改正? 如果创建3个Test1对象,有内存中有几 ...

  8. 201521123065《java程序设计》第10周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. 2. 书面作业 本次PTA作业题集异常.多线程 finally 题目4-2 1.1 截图你的提交结果(出现学 ...

  9. 201521123020 《Java程序设计》第9周学习总结

    1.本周学习总结 2. 书面作业 1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己以前编写的代码中经常出现什么异常.需要捕获吗(为什么)?应如何避免? 答:数组越界:不需要 ...

  10. Java Build Path(Java 构建路径)

    Java构建路径用于在编译Java项目时找到依赖的类,包括以下几项: 源码包 项目相关的 jar 包及类文件 项目引用的的类库 我们可以通过使用 Java 项目属性对话框中的 Java Build P ...