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 相关文章推荐
jquery 学习笔记一
Apr 07 Javascript
Jquery CheckBox全选方法代码附js checkbox全选反选代码
Jun 09 Javascript
Jquery post传递数组方法实现思路及代码
Apr 28 Javascript
JS获取当前日期时间并定时刷新示例
Mar 04 Javascript
jquery mobile页面跳转后样式丢失js失效的解决方法
Sep 06 Javascript
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
Mar 05 Javascript
jQuery模仿阿里云购买服务器选择购买时间长度的代码
Apr 29 Javascript
js实现简单的网页换肤效果
Jan 18 Javascript
使用JavaScript实现node.js中的path.join方法
Aug 12 Javascript
基于 vue-skeleton-webpack-plugin 的骨架屏实战
Aug 05 Javascript
微信小程序实现Swiper轮播图效果
Nov 22 Javascript
vue 查看dist文件里的结构(多种方式)
Jan 17 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
PHP 输出URL的快捷方式示例代码
2013/09/22 PHP
php实现的xml操作类
2016/01/15 PHP
PHP与Web页面的交互示例详解一
2020/08/04 PHP
利用PHP计算有多少小于当前数字的数字方法示例
2020/08/26 PHP
jQuery中Dom的基本操作小结
2014/01/23 Javascript
如何将php数组或者对象传递给javascript
2014/03/20 Javascript
jQuery中offset()方法用法实例
2015/01/16 Javascript
jQuery弹出框代码封装DialogHelper
2015/01/30 Javascript
JavaScript 表单处理实现代码
2015/04/13 Javascript
详解Bootstrap glyphicons字体图标
2016/01/04 Javascript
Bootstrap3使用typeahead插件实现自动补全功能
2016/07/07 Javascript
jQuery progressbar通过Ajax请求实现后台进度实时功能
2016/10/11 Javascript
基于JavaScript实现Tab选项卡切换效果
2016/11/24 Javascript
浅谈如何使用webpack构建多页面应用
2018/05/30 Javascript
django简单的前后端分离的数据传输实例 axios
2020/05/18 Javascript
解决element-ui里的下拉多选框 el-select 时,默认值不可删除问题
2020/08/14 Javascript
在react项目中使用antd的form组件,动态设置input框的值
2020/10/24 Javascript
[36:33]Ti4 循环赛第四日 附加赛NEWBEE vs Mouz
2014/07/13 DOTA
[41:41]TFT vs Secret Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
用Python写冒泡排序代码
2016/04/12 Python
python 列表删除所有指定元素的方法
2018/04/19 Python
Python使用百度api做人脸对比的方法
2019/08/28 Python
Python的Lambda函数用法详解
2019/09/03 Python
python开发实例之Python的Twisted框架中Deferred对象的详细用法与实例
2020/03/19 Python
pycharm安装及如何导入numpy
2020/04/03 Python
多视角3D可旋转的HTML5 Logo动画
2016/03/02 HTML / CSS
关于canvas.toDataURL 在iOS运行失败的问题解决
2020/09/16 HTML / CSS
输入一行文字,找出其中大写字母、小写字母、空格、数字、及其他字符各有多少
2016/04/15 面试题
学生会竞选自荐信
2013/10/12 职场文书
英语商务邀请函范文
2014/01/16 职场文书
幼儿园运动会加油词
2014/02/14 职场文书
课外小组活动总结
2014/08/27 职场文书
2015年师德表现自我评价
2015/03/05 职场文书
人力资源部工作计划
2019/05/14 职场文书
Ajax 的初步实现(使用vscode+node.js+express框架)
2021/06/18 Javascript
排查并解决MySQL生产库内存使用率高的报警
2022/04/11 MySQL