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 Aajx访问WCF服务(GET、POST、PUT、DELETE)
Mar 16 Javascript
基于jQuery实现模拟页面加载进度条
Apr 01 Javascript
jquery $(document).ready()和window.onload的区别浅析
Feb 04 Javascript
TypeError document.getElementById(...) is null错误原因
May 18 Javascript
js验证身份证号有效性并提示对应信息
Oct 19 Javascript
简单谈谈CommonsChunkPlugin抽取公共模块
Dec 31 Javascript
react redux入门示例
Apr 19 Javascript
详解vue中组件参数
Jul 09 Javascript
从0到1构建vueSSR项目之node以及vue-cli3的配置
Mar 07 Javascript
详解如何使用router-link对象方式传递参数?
May 02 Javascript
js尾调用优化的实现
May 23 Javascript
使用js在layui中实现上传图片压缩
Jun 18 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
超神学院:鹤熙已踏入神圣领域,实力不比凯莎弱
2020/03/02 国漫
特详细的PHPMYADMIN简明安装教程
2008/08/01 PHP
PHP Memcached + APC + 文件缓存封装实现代码
2010/03/11 PHP
IIS下PHP的三种配置方式对比
2014/11/20 PHP
PHP面向对象五大原则之接口隔离原则(ISP)详解
2018/04/04 PHP
Javascript - HTML的request类
2006/07/15 Javascript
JavaScript中定义对象原型的两种使用方法
2016/12/15 Javascript
jquery表单插件form使用方法详解
2017/01/20 Javascript
nodejs中使用HTTP分块响应和定时器示例代码
2017/03/19 NodeJs
JS中定位 position 的使用实例代码
2017/08/06 Javascript
javascript 面向对象实战思想分享
2017/09/07 Javascript
解决VUEX兼容IE上的报错问题
2018/03/01 Javascript
React Router V4使用指南(精讲)
2018/09/17 Javascript
详解VUE Element-UI多级菜单动态渲染的组件
2019/04/25 Javascript
Node爬取大批量文件的方法示例
2019/06/28 Javascript
高性能js数组去重(12种方法,史上最全)
2019/12/21 Javascript
vue fetch中的.then()的正确使用方法
2020/04/17 Javascript
SpringBoot+Vue开发之Login校验规则、实现登录和重置事件
2020/10/19 Javascript
[07:39]第一届亚洲邀请赛回顾视频
2017/02/14 DOTA
[01:07:20]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第二场 2月2日
2021/03/11 DOTA
Python中py文件引用另一个py文件变量的方法
2018/04/29 Python
详解python-图像处理(映射变换)
2019/03/22 Python
Python read函数按字节(字符)读取文件的实现
2019/07/03 Python
Python3批量移动指定文件到指定文件夹方法示例
2019/09/02 Python
PyCharm专业最新版2019.1安装步骤(含激活码)
2019/10/09 Python
用openCV和Python 实现图片对比,并标识出不同点的方式
2019/12/19 Python
Python imutils 填充图片周边为黑色的实现
2020/01/19 Python
Python实现代码块儿折叠
2020/04/15 Python
keras 两种训练模型方式详解fit和fit_generator(节省内存)
2020/07/03 Python
阿拉伯世界最大的电子卖场:Souq埃及
2016/08/01 全球购物
Bluebella法国官网:英国性感内衣品牌
2019/05/03 全球购物
男女钓鱼靴和甲板鞋:XTRATUF
2021/01/09 全球购物
管理心得体会
2013/12/28 职场文书
市场营销战略计划书
2014/05/06 职场文书
2014年销售工作总结与计划
2014/12/01 职场文书
css3实现的加载动画效果
2021/04/07 HTML / CSS