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 相关文章推荐
javascript 面向对象全新理练之数据的封装
Dec 03 Javascript
Extjs学习笔记之六 面版
Jan 08 Javascript
javascript JSON操作入门实例
Apr 16 Javascript
jquery下异步提交表单 异步跨域提交表单
Nov 17 Javascript
关于JavaScript中原型继承中的一点思考
Jul 25 Javascript
jQuery学习笔记(3)--用jquery(插件)实现多选项卡功能
Apr 08 Javascript
javascript中的startWith和endWith的几种实现方法
May 07 Javascript
js中符号转意问题示例探讨
Aug 19 Javascript
javascript预加载图片、css、js的方法示例介绍
Oct 14 Javascript
javascript 四十条常用技巧大全
Sep 09 Javascript
jQuery文字轮播特效
Feb 12 Javascript
Vue替代marquee标签超出宽度文字横向滚动效果
Dec 09 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 curl 登录163邮箱并抓取邮箱好友列表的代码(经测试)
2011/04/07 PHP
Linux下实现PHP多进程的方法分享
2012/08/16 PHP
FireFox浏览器使用Javascript上传大文件
2013/10/30 PHP
PHP eval函数使用介绍
2013/12/08 PHP
PHP $O00OO0=urldecode &amp; eval 解密,记一次商业源码的去后门
2020/09/13 PHP
jquery获取div宽度的实现思路与代码
2013/01/13 Javascript
解析Javascript中中括号“[]”的多义性
2013/12/03 Javascript
js showModalDialog 弹出对话框的简单实例(子窗体)
2014/01/07 Javascript
JS特效实现图片自动播放并可控的效果
2015/07/31 Javascript
Jquery日历插件制作简单日历
2015/10/28 Javascript
jQuery进行组件开发完整实例
2015/12/15 Javascript
Bootstrap 组件之按钮(二)
2016/05/11 Javascript
Vue.js中兄弟组件之间互相传值实例
2017/06/01 Javascript
angular基于ng-alain定义自己的select组件示例
2018/02/23 Javascript
vuex中的 mapState,mapGetters,mapActions,mapMutations 的使用
2018/04/13 Javascript
深入了解JavaScript 私有化
2019/05/30 Javascript
js cavans实现静态滚动弹幕
2020/05/21 Javascript
原生JS实现微信通讯录
2020/06/18 Javascript
vue element table中自定义一些input的验证操作
2020/07/18 Javascript
Python datetime时间格式化去掉前导0
2014/07/31 Python
python监控网站运行异常并发送邮件的方法
2015/03/13 Python
Python使用三种方法实现PCA算法
2017/12/12 Python
使用PyTorch训练一个图像分类器实例
2020/01/08 Python
Python原始套接字编程实例解析
2020/01/29 Python
Python基于smtplib模块发送邮件代码实例
2020/05/29 Python
python如何实现DES加密
2020/09/21 Python
python实现KNN近邻算法
2020/12/30 Python
HTML5实现表单自动验证功能实例代码
2017/01/11 HTML / CSS
法国太阳镜店:Sunglasses Shop
2016/08/27 全球购物
澳大利亚最大的护发和护肤品购物网站:RY
2019/12/26 全球购物
使用索引有什么好处
2016/07/27 面试题
C#和SQL Server的面试题
2016/08/12 面试题
三年大学生活自我鉴定
2014/01/21 职场文书
纪念九一八事变演讲稿:牢记历史,捍卫主权
2014/09/14 职场文书
创业计划书之甜品店
2019/09/18 职场文书
springboot 自定义配置 解决Boolean属性不生效
2022/03/18 Java/Android