js操作iframe的一些方法介绍


Posted in Javascript onJune 25, 2013

1. 获得iframe的window对象
存在跨域访问限制。

chrome:iframeElement. contentWindow
firefox: iframeElement.contentWindow
ie6:iframeElement.contentWindow

文章Iframes, onload, and document.domain中说“he iframe element object has a property called contentDocument that contains the iframe's document object, so you can use the parentWindow property to retrieve the window object.”意思就是一些浏览器可以通过iframeElement.contentDocument.parentWindow获得iframe的window对象。但经过测试firefox、chrome的element.contentDocument对象没有parentWindow属性。

(javascript)

function getIframeWindow(element){         
    return  element.contentWindow;   
    //return  element.contentWindow || element.contentDocument.parentWindow;   
} 

2. 获得iframe的document对象
存在跨域访问限制。

chrome:iframeElement.contentDocument
firefox:iframeElement.contentDocument
ie:element.contentWindow.document
备注:ie没有iframeElement.contentDocument属性。

(javascript)

var getIframeDocument = function(element) {   
    return  element.contentDocument || element.contentWindow.document;   
};  

3. iframe中获得父页面的window对象
存在跨域访问限制。

父页面:window.parent
顶层页面:window.top
适用于所有浏览器

4. 获得iframe在父页面中的html标签
存在跨域访问限制。

window.frameElement(类型:HTMLElement),适用于所有浏览器

5. iframe的onload事件
非ie浏览器都提供了onload事件。例如下面代码在ie中是不会有弹出框的。

(javascript)

var ifr = document.createElement('iframe');   
ifr.src = 'https://3water.com/index.php';   
ifr.onload = function() {   
    alert('loaded');   
};   
document.body.appendChild(ifr);  

但是ie却又似乎提供了onload事件,下面两种方法都会触发onload

方法一:

<iframe  onload="alert('loaded');"  src="https://3water.com/index.php"></iframe>   
 
 
方法二:  
//只有ie才支持为createElement传递这样的参数
var ifr = document.createElement('<iframe  onload="alert('loaded');" src="https://3water.com/index.php"></iframe>');   
document.body.appendChild(ifr);  

由于iframe元素包含于父级页面中,因此以上方法均不存在跨域问题。

实际上IE提供了onload事件,但必须使用attachEvent进行绑定。

var ifr = document.createElement('iframe');   
ifr.src = 'http://b.3water.com/b.php';   
if (ifr.attachEvent) {   
    ifr.attachEvent('onload',  function(){ alert('loaded'); });   
} else {   
    ifr.onload  = function() { alert('loaded'); };   
}   
document.body.appendChild(ifr);  

6. frames
window.frames可以取到页面中的帧(iframe、frame等),需要注意的是取到的是window对象,而不是HTMLElement。

var ifr1 = document.getElementById('ifr1');   
var ifr1win = window.frames[0];   
ifr1win.frameElement === ifr1;   // true   
ifr1win === ifr1;    // false  
Javascript 相关文章推荐
jQuery contains过滤器实现精确匹配使用方法
Apr 12 Javascript
鼠标拖拽移动子窗体的JS实现
Feb 25 Javascript
浅谈JavaScript数据类型及转换
Feb 28 Javascript
跟我学习javascript的arguments对象
Nov 16 Javascript
详解JavaScript的AngularJS框架中的作用域与数据绑定
Mar 04 Javascript
利用Node.js制作爬取大众点评的爬虫
Sep 22 Javascript
js中的eval()函数把含有转义字符的字符串转换成Object对象的方法
Dec 02 Javascript
bootstrap daterangepicker汉化以及扩展功能
Jun 15 Javascript
vue父子组件的嵌套的示例代码
Sep 08 Javascript
vue 2.8.2版本配置刚进入时候的默认页面方法
Sep 21 Javascript
详解vue中使用微信jssdk
Apr 19 Javascript
解决layui调用自定义方法提示未定义的问题
Sep 14 Javascript
动态获取复选框checkbox选中个数的jquery代码
Jun 25 #Javascript
JQuery在页面中添加和除移DOM示例代码
Jun 24 #Javascript
使用jQuery UI的tooltip函数修饰title属性的气泡悬浮框
Jun 24 #Javascript
js实现右下角可关闭最小化div(可用于展示推荐内容)
Jun 24 #Javascript
javascript截取字符串(通过substring实现并支持中英文混合)
Jun 24 #Javascript
原生Js实现元素渐隐/渐现(原理为修改元素的css透明度)
Jun 24 #Javascript
原生Js页面滚动延迟加载图片实现原理及过程
Jun 24 #Javascript
You might like
PHP抽象类 介绍
2012/06/13 PHP
基于PHP异步执行的常用方式详解
2013/06/03 PHP
thinkPHP5使用Rabc实现权限管理
2019/08/28 PHP
Aliyun Linux 编译安装 php7.3 tengine2.3.2 mysql8.0 redis5的过程详解
2020/10/20 PHP
mouse_on_title.js
2006/08/25 Javascript
用 JSON 处理缓存
2007/04/27 Javascript
用javascript实现自定义标签
2007/05/08 Javascript
js 深拷贝函数
2008/12/04 Javascript
通过身份证号得到出生日期和性别的js代码
2009/11/23 Javascript
用jquery设置按钮的disabled属性的实现代码
2010/11/28 Javascript
使用js实现一个可编辑的select下拉列表
2014/02/20 Javascript
分享20款美化网站的 jQuery Lightbox 灯箱插件
2014/10/10 Javascript
javascript制作坦克大战全纪录(2)
2014/11/27 Javascript
jQuery实现浮动层随浏览器滚动条滚动的方法
2015/09/22 Javascript
详解AngularJS中的http拦截
2016/02/09 Javascript
实用jquery操作表单元素的简单代码
2016/07/04 Javascript
解决IE7中使用jQuery动态操作name问题
2017/08/28 jQuery
JS处理数据四舍五入(tofixed与round的区别详解)
2017/10/26 Javascript
JS设计模式之观察者模式实现实时改变页面中金额数的方法
2018/02/05 Javascript
angular 实现的输入框数字千分位及保留几位小数点功能示例
2018/06/19 Javascript
详解vue如何使用rules对表单字段进行校验
2018/10/17 Javascript
ES6模板字符串和标签模板的应用实例分析
2019/06/25 Javascript
javascript 构建模块化开发过程解析
2019/09/11 Javascript
Vue如何使用混合Mixins和插件开发详解
2020/02/05 Javascript
vue实现瀑布流组件滑动加载更多
2020/03/10 Javascript
基于vue实现简易打地鼠游戏
2020/08/21 Javascript
[03:02]2014DOTA2西雅图邀请赛 让队员自己告诉你DK NAVI备战情况
2014/07/08 DOTA
在cmd命令行里进入和退出Python程序的方法
2018/05/12 Python
win10下python3.5.2和tensorflow安装环境搭建教程
2018/09/19 Python
python实现将汉字保存成文本的方法
2018/11/16 Python
对python遍历文件夹中的所有jpg文件的实例详解
2018/12/08 Python
SmartBuyGlasses意大利:购买太阳镜、眼镜和隐形眼镜
2018/11/20 全球购物
销售冠军获奖感言
2014/02/03 职场文书
天鹅的故事教学反思
2014/02/04 职场文书
实习协议书
2015/01/27 职场文书
2016年教育局“我们的节日——端午节”主题活动总结
2016/04/01 职场文书