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 相关文章推荐
一端时间轮换的广告
Jun 26 Javascript
详解js中class的多种函数封装方法
Jan 03 Javascript
基于jQuery实现Ajax验证用户名是否存在实例
Mar 30 Javascript
jQuery实现的小图列表,大图展示效果幻灯片示例
Oct 25 Javascript
ES6学习之变量的解构赋值
Feb 12 Javascript
Js apply方法详解
Feb 16 Javascript
Angular.js中定时器循环的3种方法总结
Apr 27 Javascript
JS实现手写parseInt的方法示例
Sep 24 Javascript
bootstrap轮播模板使用方法详解
Nov 17 Javascript
微信小程序 slot踩坑的解决
Apr 01 Javascript
详解Vue之计算属性
Jun 20 Javascript
详细分析Node.js 多进程
Jun 22 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
thinkphp框架实现删除和批量删除
2016/06/29 PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
2019/04/15 PHP
freemarker判断对象是否为空的方法
2015/08/13 Javascript
jquery.cookie.js用法实例详解
2015/12/25 Javascript
JavaScript jquery及AJAX小结
2016/01/24 Javascript
JavaScript兼容性总结之获取非行间样式案例
2016/08/07 Javascript
vue.js实现仿原生ios时间选择组件实例代码
2016/12/21 Javascript
jQuery插件FusionCharts实现的2D柱状图效果示例【附demo源码下载】
2017/03/06 Javascript
详解Vue监听数据变化原理
2017/03/08 Javascript
详解js 创建对象的几种方法
2019/03/08 Javascript
如何写好一个vue组件,老夫的一年经验全在这了(推荐)
2019/05/18 Javascript
Vue可自定义tab组件用法实例
2019/10/24 Javascript
微信小程序调用wx.getImageInfo遇到的坑解决
2020/05/31 Javascript
javascript实现拼图游戏
2021/01/29 Javascript
python实现带验证码网站的自动登陆实现代码
2015/01/12 Python
python写入中英文字符串到文件的方法
2015/05/06 Python
python抓取京东小米8手机配置信息
2018/11/13 Python
python事件驱动event实现详解
2018/11/21 Python
opencv实现静态手势识别 opencv实现剪刀石头布游戏
2019/01/22 Python
对Python之gzip文件读写的方法详解
2019/02/08 Python
Python爬取视频(其实是一篇福利)过程解析
2019/08/01 Python
python如何使用socketserver模块实现并发聊天
2019/12/14 Python
下载与当前Chrome对应的chromedriver.exe(用于python+selenium)
2020/01/14 Python
html5通过canvas实现刮刮卡效果示例分享
2014/01/27 HTML / CSS
Superdry极度干燥美国官网:英国制造的服装品牌
2018/11/13 全球购物
英国汽车零件购物网站:GSF Car Parts
2019/05/23 全球购物
介绍一下EJB的体系结构
2012/08/01 面试题
欢迎标语大全
2014/06/21 职场文书
师范毕业生求职信
2014/07/11 职场文书
关于颐和园的导游词
2015/01/30 职场文书
社区国庆节活动总结
2015/03/23 职场文书
2016年寒假社会实践活动总结
2015/03/27 职场文书
红色故事汇观后感
2015/06/18 职场文书
导游词之无锡梅园
2019/11/28 职场文书
Oracle11g R2 安装教程完整版
2021/06/04 Oracle
在MySQL中你成功的避开了所有索引
2022/04/20 MySQL