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 相关文章推荐
js arguments.callee的应用代码
May 07 Javascript
关于锚点跳转及jQuery下相关操作与插件
Oct 01 Javascript
JavaScript中扩展Array contains方法实例
Aug 23 Javascript
js中日期的加减法
May 06 Javascript
js实现可键盘控制的简单抽奖程序
Jul 13 Javascript
KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机的方法
Oct 05 Javascript
jquery  实现轮播图详解及实例代码
Oct 12 Javascript
微信小程序中使元素占满整个屏幕高度实现方法
Dec 14 Javascript
手把手教你vue-cli单页到多页应用的方法
May 31 Javascript
WEEX环境搭建与入门详解
Oct 16 Javascript
vue计算属性无法监听到数组内部变化的解决方案
Nov 06 Javascript
详解TypeScript的基础类型
Feb 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
PHP获取服务器端信息的方法
2014/11/28 PHP
ucenter中词语过滤原理分析
2016/07/13 PHP
jQuery 改变CSS样式基础代码
2010/02/11 Javascript
跟着JQuery API学Jquery 之三 筛选
2010/04/09 Javascript
基于jQuery的message插件实现右下角弹出消息框
2011/01/11 Javascript
html+css+js实现xp window界面及有关功能
2013/03/26 Javascript
JQuery处理json与ajax返回JSON实例代码
2014/01/03 Javascript
js判断undefined类型示例代码
2014/02/10 Javascript
javascript类型系统 Array对象学习笔记
2016/01/09 Javascript
浅谈js里面的InttoStr和StrtoInt
2016/06/14 Javascript
详解Node.Js如何处理post数据
2016/09/19 Javascript
利用python分析access日志的方法
2016/10/26 Javascript
Omi v1.0.2发布正式支持传递javascript表达式
2017/03/21 Javascript
JavaScript通过改变文字透明度实现的文字闪烁效果实例
2017/04/27 Javascript
Swiper实现轮播图效果
2017/07/03 Javascript
基于Vuejs的搜索匹配功能实现方法
2018/03/03 Javascript
快速了解Node中的Stream流是什么
2019/02/13 Javascript
微信小程序仿今日头条导航栏滚动解析
2019/08/20 Javascript
layui 关闭open弹出框 刷新table表格页面的方法
2019/09/16 Javascript
node.js中fs文件系统模块的使用方法实例详解
2020/02/13 Javascript
微信小程序录音实现功能并上传(使用node解析接收)
2020/02/26 Javascript
在vue中axios设置timeout超时的操作
2020/09/04 Javascript
python通过正则查找微博@(at)用户的方法
2015/03/13 Python
Python lambda函数基本用法实例分析
2018/03/16 Python
python re的findall和finditer的区别详解
2020/11/15 Python
html5的canvas方法使用指南
2014/12/15 HTML / CSS
曼联官方网上商店:Manchester United Direct
2017/07/28 全球购物
英国100%防污和防水的靴子:Muck Boot Company
2020/09/08 全球购物
区三好学生主要事迹
2014/01/30 职场文书
小学优秀班主任事迹材料
2014/05/17 职场文书
小学生竞选班干部演讲稿(5篇)
2014/09/12 职场文书
平遥古城导游词
2015/02/03 职场文书
教师节晚会主持词
2015/06/30 职场文书
党员干部学法用法心得体会
2016/01/21 职场文书
Python3中最常用的5种线程锁实例总结
2021/07/07 Python
关于JavaScript 中 if包含逗号表达式
2021/11/27 Javascript