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插件开发方法(附完整实例及下载)
Apr 01 Javascript
利用JQuery的load函数动态加载其它页面的内容的实现代码
Dec 14 Javascript
JS日期和时间选择控件升级版(自写)
Aug 02 Javascript
jquery 实现上下滚动效果示例代码
Aug 09 Javascript
iframe的父子窗口之间的对象相互调用基本用法
Sep 03 Javascript
JQuery显示、隐藏div的几种方法简明总结
Apr 16 Javascript
AngularJS变量及过滤器Filter用法分析
Nov 22 Javascript
canvas雪花效果核心代码分享
Feb 19 Javascript
jQuery简单实现MD5加密的方法
Mar 03 Javascript
微信公众号菜单配置微信小程序实例详解
Mar 31 Javascript
JavaScript实现的数字与字符串转换功能示例
Aug 23 Javascript
Vue.js中的computed工作原理
Mar 22 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中如何将数组变量写入文件
2013/06/06 PHP
php实现按指定大小等比缩放生成上传图片缩略图的方法
2014/12/15 PHP
php+ajax注册实时验证功能
2016/07/20 PHP
PHP实现微信小程序人脸识别刷脸登录功能
2018/05/24 PHP
浅析PHP中json_encode与json_decode的区别
2020/07/15 PHP
javascript prototype 原型链
2009/03/12 Javascript
解析offsetHeight,clientHeight,scrollHeight之间的区别
2013/11/20 Javascript
jQuery设置与获取HTML,文本和值的简单实例
2014/02/26 Javascript
深入分析JSONP跨域的原理
2014/12/10 Javascript
js实现简单随机抽奖的方法
2015/01/27 Javascript
javascript针对cookie的基本操作实例详解
2015/11/30 Javascript
Jquery组件easyUi实现表单验证示例
2016/08/23 Javascript
JS实现根据指定值删除数组中的元素操作示例
2018/08/02 Javascript
javascript实现手动点赞效果
2019/04/09 Javascript
使用jQuery mobile NuGet让你的网站在移动设备上同样精彩
2019/06/18 jQuery
浅析vue-cli3配置webpack-bundle-analyzer插件【推荐】
2019/10/23 Javascript
vue+elementUI组件table实现前端分页功能
2020/11/15 Javascript
Ant design vue中的联动选择取消操作
2020/10/31 Javascript
Nuxt.js nuxt-link与router-link的区别说明
2020/11/06 Javascript
记录一次websocket封装的过程
2020/11/23 Javascript
Python中字典和JSON互转操作实例
2015/01/19 Python
python实现广度优先搜索过程解析
2019/10/19 Python
Python socket连接中的粘包、精确传输问题实例分析
2020/03/24 Python
Django vue前后端分离整合过程解析
2020/11/20 Python
建筑经济管理专业求职信分享
2014/01/06 职场文书
共产党员公开承诺书
2014/03/25 职场文书
井冈山红色之旅感想
2014/10/07 职场文书
个人查摆问题及整改措施
2014/10/16 职场文书
党员学习群众路线心得体会
2014/11/04 职场文书
2014年司法局工作总结
2014/12/11 职场文书
2015年爱牙日活动总结
2015/02/05 职场文书
保研推荐信格式
2015/03/25 职场文书
赢在执行观后感
2015/06/16 职场文书
python 字典和列表嵌套用法详解
2021/06/29 Python
Python安装使用Scrapy框架
2022/04/12 Python
Mysql的Table doesn't exist问题及解决
2022/12/24 MySQL