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 BS,dialog控件自适应大小
Jul 06 Javascript
jquery对象和DOM对象的区别介绍
Aug 09 Javascript
window.location.href IE下跳转失效的解决方法
Mar 27 Javascript
JavaScript学习笔记之检测客户端类型是(引擎、浏览器、平台、操作系统、移动设备)
Dec 03 Javascript
第一次接触神奇的Bootstrap菜单和导航
Aug 01 Javascript
微信小程序 Record API详解及实例代码
Sep 30 Javascript
js前端实现图片懒加载(lazyload)的两种方式
Apr 24 Javascript
详解微信小程序设置底部导航栏目方法
Jun 29 Javascript
VueJs单页应用实现微信网页授权及微信分享功能示例
Jul 26 Javascript
vuedraggable+element ui实现页面控件拖拽排序效果
Jul 29 Javascript
Echart折线图手柄触发事件示例详解
Dec 16 Javascript
React 父子组件通信的实现方法
Dec 05 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
session 的生命周期是多长
2006/10/09 PHP
PHP中error_reporting()函数的用法(修改PHP屏蔽错误)
2011/07/01 PHP
浅析十款PHP开发框架的对比
2013/07/05 PHP
PHP简单生成缩略图相册的方法
2015/07/29 PHP
CodeIgniter基于Email类发邮件的方法
2016/03/29 PHP
Laravel 队列使用的实现
2019/01/08 PHP
WordPress免插件实现面包屑导航的示例代码
2020/08/20 PHP
js 操作select和option常用代码整理
2012/12/13 Javascript
JS+CSS实现弹出全屏灰黑色透明遮罩效果的方法
2014/12/20 Javascript
js实现文本框中输入文字页面中div层同步获取文本框内容的方法
2015/03/03 Javascript
jQuery实现网页抖动的菜单抖动效果
2015/08/07 Javascript
jQuery模拟360浏览器切屏效果幻灯片(附demo源码下载)
2016/01/29 Javascript
深入浅出ES6新特性之函数默认参数和箭头函数
2016/08/01 Javascript
js实现鼠标左右移动,图片也跟着移动效果
2017/01/25 Javascript
ES6入门教程之let和const命令详解
2017/05/17 Javascript
浅谈js基础数据类型和引用类型,深浅拷贝问题,以及内存分配问题
2017/09/02 Javascript
Vue v2.5 调整和更新不完全问题
2017/10/24 Javascript
Koa日志中间件封装开发详解
2019/03/09 Javascript
Vue注册组件命名时不能用大写的原因浅析
2019/04/25 Javascript
OpenLayers加载缩放控件使用方法详解
2020/09/25 Javascript
Python随机生成数模块random使用实例
2015/04/13 Python
解析Python中的异常处理
2015/04/28 Python
一波神奇的Python语句、函数与方法的使用技巧总结
2015/12/08 Python
Python模块、包(Package)概念与用法分析
2019/05/31 Python
pyQT5 实现窗体之间传值的示例
2019/06/20 Python
Python如何使用turtle库绘制图形
2020/02/26 Python
Python捕获异常堆栈信息的几种方法(小结)
2020/05/18 Python
什么是python的列表推导式
2020/05/26 Python
使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例
2020/12/11 Python
HTML5 video标签(播放器)学习笔记(二):播放控制
2015/04/24 HTML / CSS
恶意软件的定义
2014/11/12 面试题
活动总结报告怎么写
2014/07/03 职场文书
单位单身证明样本
2014/10/11 职场文书
见习报告格式要求
2014/11/04 职场文书
银行员工考核评语
2014/12/31 职场文书
教师师德承诺书2016
2016/03/25 职场文书