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 常用代码技巧大收集
Feb 25 Javascript
jQuery 选择器详解
Jan 19 Javascript
JavaScript给url网址进行encode编码的方法
Mar 18 Javascript
JS实现的另类手风琴效果网页内容切换代码
Sep 08 Javascript
JSON字符串和对象相互转换实例分析
Jun 16 Javascript
javascript 正则表达式去空行方法
Jan 24 Javascript
详解angular中的作用域及继承
May 31 Javascript
在vue项目创建的后初始化首次使用stylus安装方法分享
Jan 25 Javascript
element-ui带输入建议的input框踩坑(输入建议空白以及会闪出上一次的输入建议问题)
Jan 15 Javascript
vue+iview动态渲染表格详解
Mar 19 Javascript
微信小程序scroll-view实现滚动到锚点左侧导航栏点餐功能(点击种类,滚动到锚点)
Jun 11 Javascript
关于better-scroll插件的无法滑动bug(2021通过插件解决)
Mar 01 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
二十行语句实现从Excel到mysql的转化
2006/10/09 PHP
php header()函数使用说明
2008/07/10 PHP
PHP 程序员也要学会使用“异常”
2009/06/16 PHP
PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据
2012/04/09 PHP
PHP保留两位小数并且四舍五入及不四舍五入的方法
2013/09/22 PHP
PHP运行SVN命令显示某用户的文件更新记录的代码
2014/01/03 PHP
php解压文件代码实现php在线解压
2014/02/13 PHP
详解PHP原生DOM对象操作XML的方法
2016/10/17 PHP
PC端微信扫码支付成功之后自动跳转php版代码
2017/07/07 PHP
thinkphp3.2嵌入百度编辑器ueditor的实例代码
2017/07/13 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
filemanage功能中用到的lib.js
2007/04/08 Javascript
动态加载外部javascript文件的函数代码分享
2011/07/28 Javascript
IE中鼠标经过option触发mouseout的解决方法
2015/01/29 Javascript
JavaScript阻止回车提交表单的方法
2015/12/30 Javascript
教你如何终止JQUERY的$.AJAX请求
2016/02/23 Javascript
详述JavaScript实现继承的几种方式(推荐)
2016/03/22 Javascript
jQuery如何获取动态添加的元素
2016/06/24 Javascript
Bootstrap CSS组件之按钮组(btn-group)
2016/12/17 Javascript
原生JS实现动态加载js文件并在加载成功后执行回调函数的方法
2020/12/30 Javascript
Angular Material Icon使用详解
2018/11/07 Javascript
node错误处理与日志记录的实现
2018/12/24 Javascript
基于Web Audio API实现音频可视化效果
2020/06/12 Javascript
解决VUE自定义拖拽指令时 onmouseup 与 click事件冲突问题
2020/07/24 Javascript
python3访问sina首页中文的处理方法
2014/02/24 Python
Python获取脚本所在目录的正确方法
2014/04/15 Python
Python简单格式化时间的方法【strftime函数】
2016/09/18 Python
基于Python log 的正确打开方式
2018/04/28 Python
Python3.5实现的罗马数字转换成整数功能示例
2019/02/25 Python
python3.6编写的单元测试示例
2019/08/17 Python
css3 仿写阿里云水纹效果的示例代码
2018/02/10 HTML / CSS
台湾前三大B2C购物网站:MOMO购物网
2017/04/27 全球购物
50道外企软件测试面试题
2014/08/18 面试题
感恩主题班会教案
2015/08/12 职场文书
Nginx反爬虫策略,防止UA抓取网站
2021/03/31 Servers
javascript实现计算器功能详解流程
2021/11/01 Javascript