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 相关文章推荐
JavaScript 类似flash效果的立体图片浏览器
Feb 08 Javascript
textarea中的手动换行处理的jquery代码
Feb 26 Javascript
jquery图片放大镜功能的实例代码
Mar 26 Javascript
jQuery元素选择器用法实例
Dec 23 Javascript
JS+CSS实现Div弹出窗口同时背景变暗的方法
Mar 04 Javascript
AngularJS 表达式详细讲解及实例代码
Jul 26 Javascript
JS动态添加选项案例分析
Oct 17 Javascript
angularjs ui-router中路由的二级嵌套
Mar 10 Javascript
教你用Cordova打包Vue项目的方法
Oct 17 Javascript
微信小程序实现下拉菜单切换效果
Mar 30 Javascript
基于jsbarcode 生成条形码并将生成的条码保存至本地+源码
Apr 27 Javascript
vue引入静态js文件的方法
Jun 20 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
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
PHP实现的防止跨站和xss攻击代码【来自阿里云】
2018/01/29 PHP
PHP笛卡尔积实现算法示例
2018/07/30 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
2019/04/09 PHP
网络图片延迟加载实现代码 超越jquery控件
2010/03/27 Javascript
JavaScript中实现块作用域的方法
2010/04/01 Javascript
用于deeplink的js方法(判断手机是否安装app)
2014/04/02 Javascript
jquery 中的each()跳出循环的语句
2014/05/23 Javascript
超级简易的JS计算器实例讲解(实现加减乘除)
2017/08/08 Javascript
js装饰设计模式学习心得
2018/02/17 Javascript
vue2.0实现音乐/视频播放进度条组件
2018/06/06 Javascript
javascript 构建模块化开发过程解析
2019/09/11 Javascript
原生js实现碰撞检测
2020/03/12 Javascript
viewer.js一个强大的基于jQuery的图像查看插件(支持旋转、缩放)
2020/04/01 jQuery
Vue环境搭建+VSCode+Win10的详细教程
2020/08/19 Javascript
python登陆asp网站页面的实现代码
2015/01/14 Python
python 字符串转列表 list 出现\ufeff的解决方法
2017/06/22 Python
Python爬虫获取整个站点中的所有外部链接代码示例
2017/12/26 Python
完美解决在oj中Python的循环输入问题
2018/06/25 Python
Python标准库shutil用法实例详解
2018/08/13 Python
使用Python自动化破解自定义字体混淆信息的方法实例
2019/02/13 Python
Python + Requests + Unittest接口自动化测试实例分析
2019/12/12 Python
pytorch 指定gpu训练与多gpu并行训练示例
2019/12/31 Python
Pytorch 使用不同版本的cuda的方法步骤
2020/04/02 Python
在pycharm中关掉ipython console/PyDev操作
2020/06/09 Python
解决python3中os.popen()出错的问题
2020/11/19 Python
html5视频媒体标签video的使用方法及完整参数说明详解
2019/09/27 HTML / CSS
药品质量检测应届生求职信
2013/11/14 职场文书
出生医学证明样本
2014/01/17 职场文书
教师中国梦演讲稿
2014/04/23 职场文书
计算机售后服务承诺书
2014/05/30 职场文书
小学数学教研活动总结
2014/07/01 职场文书
药店促销活动策划方案
2014/08/24 职场文书
2015年计划生育责任书
2015/05/08 职场文书
微信早安问候语
2015/11/10 职场文书
Python中如何处理常见报错
2022/01/18 Python