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 相关文章推荐
如何实现动态删除javascript函数
May 27 Javascript
javascript数组去掉重复
May 12 Javascript
基于javascipt-dom编程 table对象的使用
Apr 22 Javascript
javascript动态的改变IFrame的高度实现自动伸展
Oct 12 Javascript
jQuery 获取浏览器所在的IP地址的小例子
Nov 08 Javascript
jQuery学习笔记之总体架构
Jun 03 Javascript
window.location.reload 刷新使用分析(去对话框)
Nov 11 Javascript
jQuery.deferred对象使用详解
Mar 18 Javascript
AngularJS使用ng-app自动加载bootstrap框架问题分析
Jan 04 Javascript
基于 Vue 实现一个酷炫的 menu插件
Nov 14 Javascript
(模仿京东用户注册)用JQuery实现简单表单验证,初学者必看
Jan 08 jQuery
node crawler如何添加promise支持
Feb 01 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
CI配置多数据库访问的方法
2016/03/28 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
2017/05/02 PHP
ThinkPHP5框架缓存查询操作分析
2018/05/30 PHP
PHP如何通过表单直接提交大文件详解
2019/01/08 PHP
jQuery 打造动态下滑菜单实现说明
2010/04/15 Javascript
js操作textarea方法集合封装(兼容IE,firefox)
2011/02/22 Javascript
JAVASCRIPT车架号识别/验证函数代码 汽车车架号验证程序
2012/01/08 Javascript
页面定时刷新(1秒刷新一次)
2013/11/22 Javascript
jquery 3D 标签云示例代码
2014/06/12 Javascript
javascript实现playfair和hill密码算法
2014/12/07 Javascript
js实现仿QQ秀换装效果的方法
2015/03/04 Javascript
jquery右下角自动弹出可关闭的广告层
2015/05/08 Javascript
基于jQuery通过jQuery.form.js插件使用ajax提交form表单
2015/08/17 Javascript
javascript运动框架用法实例分析(实现放大与缩小效果)
2016/01/08 Javascript
JS中使用FormData上传文件、图片的方法
2016/08/07 Javascript
javascript入门之window对象【新手必看】
2016/11/22 Javascript
JavaScript通过改变文字透明度实现的文字闪烁效果实例
2017/04/27 Javascript
javascript 取小数点后几位几种方法总结
2017/08/02 Javascript
JS动态添加元素及绑定事件造成程序重复执行解决
2017/12/07 Javascript
vue实现简单loading进度条
2018/06/06 Javascript
vue+element-ui动态生成多级表头的方法
2018/08/28 Javascript
Vue Router 实现动态路由和常见问题及解决方法
2020/03/06 Javascript
python用字典统计单词或汉字词个数示例
2014/04/22 Python
Python中使用SAX解析xml实例
2014/11/21 Python
Python3实现抓取javascript动态生成的html网页功能示例
2017/08/22 Python
python with提前退出遇到的坑与解决方案
2018/01/05 Python
python使用pil库实现图片合成实例代码
2018/01/20 Python
Python判断变量名是否合法的方法示例
2019/01/28 Python
详解PyCharm安装MicroPython插件的教程
2019/06/24 Python
Python 实现国产SM3加密算法的示例代码
2020/09/21 Python
销售团队激励口号
2014/06/06 职场文书
民警群众路线教育实践活动对照检查材料
2014/10/04 职场文书
初婚初育证明范本
2014/11/24 职场文书
校本课程教学计划
2015/01/19 职场文书
2016年三八红旗手先进事迹材料
2016/02/26 职场文书
基于Python编写一个监控CPU的应用系统
2022/06/25 Python