JS获取并操作iframe中元素的方法


Posted in Javascript onMarch 21, 2013

JS获取/设置iframe内对象元素、文档的几种方法

1、IE专用(通过frames索引形象定位):

document.frames[i].document.getElementById('元素的ID');

2、IE专用(通过iframe名称形象定位):

document.frames['iframe的name'].document.getElementById('元素的ID');

以上方法,不仅对iframe适用,对frameset里的frame也同样适用。IE虽然擅于自定标准,但不得不说它很多的设计还是比较体现人性化的。比如这个,它在同样支持下面的标准路径之外,提供了一个简洁且形象化的写法。

3、通用方法:

document.getElementById('iframe的ID').contentWindow.document.getElementById('元素的ID')

注意要加上contentWindow,往往出现问题都是因为这个容易被忽略,它代表frame和iframe内部的窗口对象。

JS获取iframe文档内容

<script type="text/javascript"> 

function getIframeContent(){  //获取iframe中文档内容

 var doc;

 if (document.all){ // IE 

  doc = document.frames["MyIFrame"].document; 

 }else{ // 标准

  doc = document.getElementById("MyIFrame").contentDocument; 

 }
 return doc.body.innerHTML;

} 

</script>

注意:上面的 .contentDocument 相当于 .contentWindow.document !

一、需求与遇到的问题

在网站的后台管理中使用了iframe框架布局,包括顶部菜单、左侧导航和主页面。需求是:点击主页面上的一个按钮,在顶部菜单栏的右侧显示“退出”链接,点击可退出系统。

我的思路是:在顶部的菜单页面放一个不可见的“退出”链接,当用户点击位于iframe中的主页面(mainPage.htm)中的按钮时,在顶部菜单页面的右侧显示“退出”。

我现在遇到的问题是:如何在页面的一个iframe子页面(mainPage.htm)中获取并且操作其它iframe子页面(比如topPage.htm)中的HTML元素?

二、通过JS获取并操作iframe中的元素来解决问题

这里主要就是通过JS来操作Window对象。Window 对象表示浏览器中打开的窗口,如果文档包含框架(frame 或 iframe 标签),浏览器会为 HTML 文档创建一个 window 对象,并为每个框架创建一个额外的 window 对象。

经过我在网上查资料,找到了JS操作iframe中HTML元素的方法。示例如下。

         function ShowExit() {

             //获取iframe的window对象

             var topWin = window.top.document.getElementById("topNav").contentWindow;

             //通过获取到的window对象操作HTML元素,这和普通页面一样

             topWin.document.getElementById("exit").style.visibility = "visible";

         } 

说明:第一步,通过window.top.document.getElementById("topNav")方法获取了顶部菜单页面(topPage.htm)所在的iframe对象;第二步,通过上一步获取到的iframe对象的contentWindow属性得到了iframe中元素所在的window对象;第三步,通过上一步获取到的window对象来操作iframe框架中的元素,这和操作不在iframe框架中的普通HTML元素是一样的。

Javascript 相关文章推荐
为数据添加append,remove功能
Oct 03 Javascript
AngularJS表单编辑提交功能实例
Feb 13 Javascript
jquery中表单 多选框的一种巧妙写法
Sep 06 Javascript
分析js闭包引起的事件注册问题
Mar 29 Javascript
判断数组的最佳方法(推荐)
Oct 11 Javascript
Angular2库初探
Mar 01 Javascript
关于Node.js中Buffer的一些你可能不知道的用法
Mar 28 Javascript
JavaScript的Object.defineProperty详解
Jul 09 Javascript
浅谈vue父子组件怎么传值
Jul 21 Javascript
node app 打包工具pkg的具体使用
Jan 17 Javascript
ES10 特性的完整指南小结
Mar 04 Javascript
JS实现页面鼠标点击出现图片特效
Aug 19 Javascript
jQuery页面图片伴随滚动条逐渐显示的小例子
Mar 21 #Javascript
js 验证密码强弱的小例子
Mar 21 #Javascript
javascript中日期转换成时间戳的小例子
Mar 21 #Javascript
Javascript算符的优先级介绍
Mar 20 #Javascript
jQuery.validate 常用方法及需要注意的问题
Mar 20 #Javascript
如何用js控制frame的隐藏或显示的解决办法
Mar 20 #Javascript
事件冒泡是什么如何用jquery阻止事件冒泡
Mar 20 #Javascript
You might like
linux下使用ThinkPHP需要注意大小写导致的问题
2011/08/02 PHP
使用php测试硬盘写入速度示例
2014/01/27 PHP
ThinkPHP3.1基础知识快速入门
2014/06/19 PHP
javascript之通用简单的table选项卡实现(二)
2010/05/09 Javascript
jQuery支持添加事件的日历特效代码分享(3种样式)
2015/08/24 Javascript
ionic 上拉菜单(ActionSheet)实例代码
2016/06/06 Javascript
JavaScript 对象详细整理总结
2016/09/29 Javascript
Angular 2 ngForm中的ngModel、[ngModel]和[(ngModel)]的写法
2017/06/29 Javascript
Vue2.0子同级组件之间数据交互方法
2018/02/28 Javascript
Vue配合iView实现省市二级联动的示例代码
2018/07/27 Javascript
bootstrap select2插件用ajax来获取和显示数据的实例
2018/08/09 Javascript
微信小程序中如何计算距离某个节日还有多少天
2019/07/15 Javascript
layuiAdmin循环遍历展示商品图片列表的方法
2019/09/16 Javascript
vue实现选中效果
2020/10/07 Javascript
Python闭包实现计数器的方法
2015/05/05 Python
Python函数中的函数(闭包)用法实例
2016/03/15 Python
深入浅析Python中join 和 split详解(推荐)
2016/06/30 Python
Python测试人员需要掌握的知识
2018/02/08 Python
Python网络编程之TCP套接字简单用法示例
2018/04/09 Python
详解Python 数据库的Connection、Cursor两大对象
2018/06/25 Python
使用python脚本实现查询火车票工具
2018/07/19 Python
python实现感知器算法(批处理)
2019/01/18 Python
python如何使用socketserver模块实现并发聊天
2019/12/14 Python
pycharm快捷键汇总
2020/02/14 Python
Python实现链表反转的方法分析【迭代法与递归法】
2020/02/22 Python
解决c++调用python中文乱码问题
2020/07/29 Python
localStorage 设置过期时间的方法实现
2018/12/21 HTML / CSS
英国创新设计文具、卡片和礼品包装网站:Paperchase
2018/07/14 全球购物
一个J2EE项目团队的主要人员组成是什么
2012/06/04 面试题
机电一体化自荐信
2013/12/10 职场文书
物业公司采购员岗位职责
2013/12/31 职场文书
新郎新娘婚礼答谢词
2014/01/11 职场文书
文明班级建设方案
2014/05/15 职场文书
2014年教学工作总结
2014/11/13 职场文书
2014年度个人工作总结范文
2015/03/09 职场文书
如何使用分区处理MySQL的亿级数据优化
2021/06/18 MySQL