js操作iframe的一些方法介绍

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 = 'http://www.jb51.net/index.php';
ifr.onload = function() {
alert('loaded');
};
document.body.appendChild(ifr);

但是ie却又似乎提供了onload事件,下面两种方法都会触发onload

方法一:

复制代码 代码如下:

<iframe onload="alert('loaded');" src="http://www.jb51.net/index.php"></iframe>

方法二:
//只有ie才支持为createElement传递这样的参数

复制代码 代码如下:

var ifr = document.createElement('<iframe onload="alert('loaded');" src="http://www.jb51.net/index.php"></iframe>');
document.body.appendChild(ifr);

由于iframe元素包含于父级页面中,因此以上方法均不存在跨域问题。

实际上IE提供了onload事件,但必须使用attachEvent进行绑定。

复制代码 代码如下:

var ifr = document.createElement('iframe');
ifr.src = 'http://b.jb51.net/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

时间: 2024-09-19 09:13:20

js操作iframe的一些方法介绍的相关文章

js操作iframe的一些方法介绍_javascript技巧

1. 获得iframe的window对象存在跨域访问限制. chrome:iframeElement. contentWindowfirefox: iframeElement.contentWindowie6:iframeElement.contentWindow 文章Iframes, onload, and document.domain中说"he iframe element object has a property called contentDocument that contains

JS操作iframe里的dom的介绍

本篇主要是对JS操作iframe里的dom进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 直接赋值如下代码测试即可明白:   1.html: 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http

充分发挥Node.js程序性能的一些方法介绍

  这篇文章主要介绍了充分发挥Node.js程序性能的一些方法介绍,Node.js是把JavaScript用于服务器端的框架,需要的朋友可以参考下 一个Node.JS 的进程只会运行在单个的物理核心上,就是因为这一点,在开发可扩展的服务器的时候就需要格外的注意. 因为有一系列稳定的API,加上原生扩展的开发来管理进程,所以有很多不同的方法来设计一个可以并行的Node.JS运用.在这篇博文里,我们就来比较下这些可能的架构. 这篇文章同时也介绍compute-cluster 模块:一个小型的Node

JS 操作Array数组的方法及属性实例

 本篇文章主要是对JS操作Array数组的方法及属性进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 本文总结了Array数组的3个属性,length 属性.prototype 属性.constructor 属性使用,并附注数组对象的8个分类及多个方法使用,具体如下:   对象的3个属性 1.length 属性   length 属性 Length属性表示数组的长度,即其中元素的个数.因为数组的索引总是由0开始,所以一个数组的上下限分别是:0和length-1.和其他大多数不同的是

JS操作HTML自定义属性的方法

 这篇文章主要介绍了JS操作HTML自定义属性的方法,以实例形式分析了html中自定义属性的设置与对应的javascript操作技巧,非常具有实用价值,需要的朋友可以参考下     本文实例讲述了JS操作HTML自定义属性的方法.分享给大家供大家参考.具体如下: HTML代码如下(其中的displayName为自定义属性): 代码如下: <input type="text" id="txtBox" displayName="123456"

JS操作HTML自定义属性的方法_javascript技巧

本文实例讲述了JS操作HTML自定义属性的方法.分享给大家供大家参考.具体如下: HTML代码如下(其中的displayName为自定义属性): 复制代码 代码如下: <input type="text" id="txtBox" displayName="123456" /> 获取自定义属性值: 复制代码 代码如下: document.getElementById("txtBox").getAttribute(&q

js操作iframe兼容各种主流浏览器示例代码

遇到了操作iframe的相关问题,其实就是在操作iframe内部某个窗体时,调用父窗体的一个函数,下面与大家分享下操作iframe兼容各种浏览器的方法   在做项目时,遇到了操作iframe的相关问题.业务很简单,其实就是在操作iframe内部某个窗体时,调用父窗体的一个函数.于是就写了两个很简单的htm页面用来测试,使用网上流行的方法在谷歌浏览器中始终报错,不能通过. 父页面parent.html的代码如下 复制代码 代码如下: <html xmlns="http://www.w3.or

js操作iframe兼容各种主流浏览器示例代码_javascript技巧

在做项目时,遇到了操作iframe的相关问题.业务很简单,其实就是在操作iframe内部某个窗体时,调用父窗体的一个函数.于是就写了两个很简单的htm页面用来测试,使用网上流行的方法在谷歌浏览器中始终报错,不能通过. 父页面parent.html的代码如下 复制代码 代码如下: <html xmlns="http://www.w3.org/1999/xhtml"> <head><title> </title> <script src

从父页面读取和操作iframe中内容方法_javascript技巧

基本的操作方法: document.frames("frame_id").document.action; 其中,frame_id是该父页面需要进行操作的iframe的id,action是iframe中的相关操作. 从该方法中,可以看出 document.frames("frame_id")是用来从父页面中获取iframe的id的,而后面的document.action同一般的脚本对页面元素操作一样,具体举个例子来说明一下,其中父页面引用iframe部分如下: 复制