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的代码显示区域自动拉长效果
Dec 07 Javascript
Mac/Windows下如何安装Node.js
Nov 22 Javascript
javascript实现无限级select联动菜单
Jan 02 Javascript
莱鸟介绍window.print()方法
Jan 06 Javascript
javascript原生ajax写法分享
Apr 10 Javascript
jQuery+CSS3实现四种应用广泛的导航条制作实例详解
Sep 17 Javascript
canvas绘制一个常用的emoji表情
Mar 30 Javascript
layui导航栏实现代码
May 19 Javascript
React Native验证码倒计时工具类分享
Oct 24 Javascript
详解Vue+ElementUI从零开始搭建自己的网站(一、环境搭建)
Apr 30 Javascript
Threejs实现滴滴官网首页地球动画功能
Jul 13 Javascript
如何使用three.js 制作一个三维的推箱子游戏
Jul 29 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获取网页内容方法总结
2008/12/04 PHP
YII Framework框架教程之缓存用法详解
2016/03/14 PHP
PHP运行模式汇总
2016/11/06 PHP
laravel框架select2多选插件初始化默认选中项操作示例
2020/02/18 PHP
让IE8支持DOM 2(不用框架!)
2009/12/31 Javascript
基于jquery的一行代码轻松实现拖动效果
2010/12/28 Javascript
JavaScript设置首页和收藏页面的小例子
2013/11/11 Javascript
javascript学习笔记(八)正则表达式
2014/10/08 Javascript
js实现select组件的选择输入过滤代码
2014/10/14 Javascript
轻松创建nodejs服务器(9):实现非阻塞操作
2014/12/18 NodeJs
jQuery修改class属性和CSS样式整理
2015/01/30 Javascript
Javascript如何判断数据类型和数组类型
2016/06/22 Javascript
JavaScript数组和对象的复制
2017/03/21 Javascript
微信小程序实现底部导航
2018/11/05 Javascript
vue.js实现会动的简历(包含底部导航功能,编辑功能)
2019/04/08 Javascript
python有证书的加密解密实现方法
2014/11/19 Python
Python基于回溯法子集树模板解决最佳作业调度问题示例
2017/09/08 Python
Python与人工神经网络:使用神经网络识别手写图像介绍
2017/12/19 Python
Python爬虫_城市公交、地铁站点和线路数据采集实例
2018/01/10 Python
详解Python最长公共子串和最长公共子序列的实现
2018/07/07 Python
利用python打开摄像头及颜色检测方法
2018/08/03 Python
利用Django提供的ModelForm增删改数据的方法
2019/01/06 Python
Python3.5常见内置方法参数用法实例详解
2019/04/29 Python
12个步骤教你理解Python装饰器
2019/07/01 Python
对DJango视图(views)和模版(templates)的使用详解
2019/07/17 Python
python实现时间序列自相关图(acf)、偏自相关图(pacf)教程
2020/06/03 Python
Python decimal模块使用方法详解
2020/06/08 Python
html5的localstorage详解
2017/05/09 HTML / CSS
卡西欧G-SHOCK英国官网: 防水防震手表
2018/01/08 全球购物
澳大利亚领先的折扣药房:Chemist Direct(有中文站)
2018/11/24 全球购物
买卖车协议书
2014/04/21 职场文书
理财计划书
2014/08/14 职场文书
幼儿园法制宣传日活动总结
2014/11/01 职场文书
大学生十八大感想
2015/08/11 职场文书
关于职业道德的心得体会
2016/01/18 职场文书
怎么禁用Win11输入法 最新Win11输入法关闭教程
2022/08/05 数码科技