父页面获取子页面元素:

注意:onload事件

jQuery获取:


$("iframe").contents().find("holder")......;

(嵌套三层,或者更多时)


$('iframe').contents().find('iframe').contents().find("iframe")......

js获取:


window.frames["holder"].document 或者 window.frames[0].document(不推荐)

(嵌套三层,或者更多时)


window.frames[0].window.frames[0](......).document

补充拓展:(仅供参考)

document.frames 与 window.frames 之间的区别

document.frames 只有IE、Opera 支持,等同于 window.frames。用来取得当前页面内 window 对象的集合。

在 Firefox、Chorome、Safari中使用 document.frames 不能获取到 FRAME 元素

window.frames['myframe'] 代替 document.frames('myframe')或document.frames['myframe']。

注意:window.frames只可写成window.frames['myframe']不能写成window.frames('myframe')

子页面获取父页面元素:

 

第一、在iframe中查找父页面元素的方法:
$('#id', window.parent.document)

第二、在父页面中获取iframe中的元素方法:
$(this).contents().find("#suggestBox")

第三、在iframe中调用父页面中定义的方法和变量:
parent.method
parent.value

 $(window.parent.document.body) //麻烦的方法:

 

$($(window).eq(0)[0].parent.document).find('body'); ,忘了可以用前面的方法了

1、子页面获取iframe父页面的DOM

jQuery获取:


$("#holder",parent.document)

js获取:


parent.document.getElementById("holder")

2、子页面获取父页面里的其他iframe子页面里的DOM

jQuery获取:


$("#holder",window.parent.frames["holder"].document)

js获取:


window.parent.frames["holder"].document.getElementById("holder")

补充拓展:(仅供参考)


opener 与 parent 之间的区别

opener:

opener用于在window.open的页面引用执行该window.open方法的的页面的对象。例如:A页面通过window.open()方法弹出了B页面,在B页面中就可以通过opener来引用

A页面,这样就可以通过这个对象来对A页面进行操作。

parent:

parent用于iframe,frame中生成的子页面中访问父页面的对象。例如:A页面中有一个iframe或frame,那么iframe或frame中的页面就可以通过parent对象来引用A页面

中的对象。这样就可以获取或返回值到A页面中。

总结:


parent指父窗口,在FRAMESET中,FRAME的PARENT就是FRAMESET窗口。 


opener指用WINDOW.OPEN等方式创建的新窗口对应的原窗口。


parent是相对于框架来说父窗口对象。 


opener是针对于用window.open打开的窗口来说的父窗口,前提是window.open打开的才有。

iframe多层嵌套时获取元素总结的更多相关文章

  1. 2014-10-28——iframe多层嵌套时获取元素总结

    同域: 父页面获取子页面元素: 注意:onload事件 jQuery获取:$("iframe").contents().find("holder")...... ...

  2. iframe多层嵌套时获取元素

    一.同域:1.父页面获取子页面元素:注意:onload事件jQuery获取:$("iframe").contents().find("holder")..... ...

  3. iframe多层嵌套时,Jquery获取元素

    在项目中,尤其是后台管理项目,会使用到iframe嵌套的网页,说起iframe,真的是个让人头疼的东西,能避开是最好避开.不然要请随身备好氧气瓶哈(因为管理和调试过程中往往会被气缺氧!!!哈哈哈~~~ ...

  4. Bootstrap中模态框多层嵌套时滚动条问题

    在使用Bootstrap中模态框过程中,如果出现多层嵌套的时候,如打开模态框A,然后在A中打开模态框B,在关闭B之后,如果A的内容比较多,滚动条会消失,而变为Body的滚动条,这是由于模态框自带的遮罩 ...

  5. vue中,对象数组多层嵌套时,更新数据更新页面

    vue中的对象和数组的元素直接赋值修改时,是不能响应到view中去的 1.对象更新 this.a={title:'列表1’}; this.a.title='列表2’; <h1>{{a.ti ...

  6. Android解决Fragment多层嵌套时onActivityResult无法正确回调的问题

    前言: Fragment也可以使用startActivityForResult方法去打开一个Activity,然后在其onActivityResult方法中处理结果,可是当Fragment嵌套的时候, ...

  7. 元素多层嵌套,JS获取问题

    如果一段html嵌套过多,在js中获取还是比较麻烦的,我写了几套方案,大家可以参考参考,如果你有好的方法,也分享出来,让我们瞧瞧. HTML: <!DOCTYPE html> <ht ...

  8. 一键切换皮肤的解决思想及iframe嵌套时寻找下级iframe的方法

    项目中有个一键切换皮肤的功能,感觉还不错,记录下,就是各颜色样式设置起来太复杂了,不知道有没有更简便的方法: 1.切换皮肤结构层 <li title="<s:text name= ...

  9. js解析多层嵌套的json,取出所有父元素属性和遍历所有子元素

    已知一个多层嵌套的json,取出所有父元素和子元素的id值 思路:因为不知道到底嵌套了多少层,递归有可能造成栈溢出.查询时间特别久的问题 所以先查询一次,判断是否有子节点,如果有,取出子节点并到父节点 ...

随机推荐

  1. Play modules

    A Play application can be assembled from several application modules. This allows you to reuse appli ...

  2. HTML5树叶飘落动画

    查看效果:http://keleyi.com/keleyi/phtml/css3/15.htm 请使用Chrome浏览器查看本效果. html源代码: <!DOCTYPE HTML> &l ...

  3. “.”(十六进制值 0x00)是无效的字符解决方案

    自从我们的项目数据层从读取数据库改为读取接口服务后,经常会出现一些类似于的错误.我们的数据结构如下所示 <type><![CDATA[gp]]></type> &l ...

  4. MFC--响应鼠标和键盘操作

    一个程序最重要的部分之一是对鼠标和键盘操作的响应. 一.  理解鼠标事件.之前对鼠标事件的认识仅仅局限于处理控件的单击与双击事件.但实际鼠标的操作包含很多.这里将以一个画图的小程序讲解对鼠标的响应. ...

  5. Sublime Text 2 windows8安装插件失败解决

    事件是这样的: 1.安装Package Control组件后, 2.调出Install Package选项安装插件,状态栏显示成功, 3.但打开Packages目录也看不到,Sublime插件管理也没 ...

  6. Android—基于Socket与上传图片到客户端

    最近项目中需要客户端和Socket互相传递数据时候需要相互传递图片所以做下总结以免以后忘记,也希望给大家带来帮助. 先上客户端的代码: 根据图片名称上传照相机中单个照片(此方法为自己封装) 参数所代表 ...

  7. 适配iOS 10以及Xcode 8(转载)

    一.证书管理 用Xcode8打开工程后,比较明显的就是下图了,这个是苹果的新特性,可以帮助我们自动管理证书.建议大家勾选这个Automatically manage signing(Ps.但是在bea ...

  8. 在 CentOS7 上部署 zookeeper 服务

    在 CentOS7 上部署 zookeeper 服务 1 用 SecureCRT 或 XShell 等 Linux 客户端工具连接至 CentOS7 服务器: 2 进入到 /usr/local/too ...

  9. Appfuse:起步

    在众多开源的Java开源CMS中探索了很久,终于选定了appfuse,理由如下: 1. 简洁:只搭建了框架,没有做多余的事 2. 完成了基本的用户管理:用户.角色.权限的定义很清晰 3. 符合预期的架 ...

  10. jdb - The Java Debugger

    jdb 是一个简单的命令行调试器,可以调试本地或远程 Java Virtual Machine. jdb [ options ] [ class ] [ arguments ] options 命令行 ...