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 相关文章推荐
关于取不到由location.href提交而来的上级页面地址的解决办法
Jul 30 Javascript
JQuery的Validation插件中Remote验证的中文问题
Jul 26 Javascript
JS小功能(offsetLeft实现图片滚动效果)实例代码
Nov 28 Javascript
sogou地图API用法实例教程
Sep 11 Javascript
基于JQuery制作可编辑的表格特效
Dec 23 Javascript
js实现横向伸展开的二级导航菜单代码
Aug 28 Javascript
浅谈js常用内置方法和对象
Sep 24 Javascript
详解在vue-cli中使用路由
Sep 25 Javascript
深入理解ES6 Promise 扩展always方法
Sep 26 Javascript
Array数组对象中的forEach、map、filter及reduce详析
Aug 02 Javascript
JavaScript用document.write()输出换行的示例代码
Nov 26 Javascript
element-ui中el-upload多文件一次性上传的实现
Dec 02 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中神奇的fastcgi_finish_request
2011/05/02 PHP
php数组函数序列之rsort() - 对数组的元素值进行降序排序
2011/11/02 PHP
php漏洞之跨网站请求伪造与防止伪造方法
2013/08/15 PHP
php中get_meta_tags()、CURL与user-agent用法分析
2014/12/16 PHP
PHP实现生成推广海报的方法详解
2018/03/14 PHP
Laravel 将数据表的数据导出,并生成seeds种子文件的方法
2019/10/09 PHP
Javascript公共脚本库系列(一): 弹出层脚本
2011/02/24 Javascript
js网页侧边随页面滚动广告效果实现
2011/04/14 Javascript
JS网页播放声音实现代码兼容各种浏览器
2013/09/22 Javascript
javascript实现可全选、反选及删除表格的方法
2015/05/15 Javascript
JavaScript学习笔记--常用的互动方法
2016/12/07 Javascript
ES6新特性八:async函数用法实例详解
2017/04/21 Javascript
微信小程序获取用户openId的实现方法
2017/05/23 Javascript
JS实现点击链接切换显示隐藏内容的方法
2017/10/19 Javascript
为jquery的ajax请求添加超时timeout时间的操作方法
2018/09/04 jQuery
js实现时分秒倒计时
2019/12/03 Javascript
js实现聊天对话框
2020/02/08 Javascript
jquery绑定事件 bind和on的用法与区别分析
2020/05/22 jQuery
Python反射的用法实例分析
2018/02/11 Python
python2.7无法使用pip的解决方法(安装easy_install)
2018/04/03 Python
Python BS4库的安装与使用详解
2018/08/08 Python
python实现贪吃蛇小游戏
2020/03/21 Python
Python网络编程之使用TCP方式传输文件操作示例
2019/11/01 Python
Python脚本操作Excel实现批量替换功能
2019/11/20 Python
python生成器用法实例详解
2019/11/22 Python
Links of London官方网站:英国标志性的珠宝品牌
2017/04/09 全球购物
英国领先的在线高尔夫设备零售商:Golfgeardirect
2020/12/11 全球购物
玩具公司的创业计划书
2013/12/31 职场文书
优秀通讯员事迹材料
2014/01/28 职场文书
政治学求职信
2014/06/03 职场文书
教师求职自荐信
2015/03/26 职场文书
2015年机关纠风工作总结
2015/05/15 职场文书
2016元旦文艺汇演主持词(开场白+结束语)
2015/12/03 职场文书
安全生产协议书
2016/03/22 职场文书
Spring this调用当前类方法无法拦截的示例代码
2022/03/20 Java/Android
Go gorilla securecookie库的安装使用详解
2022/08/14 Golang