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属性。

  1. function getIframeWindow(element){
  2. return  element.contentWindow;
  3. //return  element.contentWindow || element.contentDocument.parentWindow;
  4. }
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属性。

  1. var getIframeDocument = function(element) {
  2. return  element.contentDocument || element.contentWindow.document;
  3. };
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中是不会有弹出框的。

  1. var ifr = document.createElement('iframe');
  2. ifr.src = 'http://www.b.com/index.php';
  3. ifr.onload = function() {
  4. alert('loaded');
  5. };
  6. document.body.appendChild(ifr);
var ifr = document.createElement('iframe');
ifr.src = 'http://www.b.com/index.php';
ifr.onload = function() {
alert('loaded');
};
document.body.appendChild(ifr);

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

  1. 方法一:
  2. <iframe  onload="alert('loaded');"  src="http://www.b.com/index.php"></iframe>
  3. 方法二:
  4. //只有ie才支持为createElement传递这样的参数
  5. var ifr = document.createElement('<iframe  onload="alert('loaded');" src="http://www.b.com/index.php"></iframe>');
  6. document.body.appendChild(ifr);
方法一:
<iframe onload="alert('loaded');" src="http://www.b.com/index.php"></iframe> 方法二:
//只有ie才支持为createElement传递这样的参数
var ifr = document.createElement('<iframe onload="alert('loaded');" src="http://www.b.com/index.php"></iframe>');
document.body.appendChild(ifr);

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

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

  1. var ifr = document.createElement('iframe');
  2. ifr.src = 'http://b.a.com/b.php';
  3. if (ifr.attachEvent) {
  4. ifr.attachEvent('onload',  function(){ alert('loaded'); });
  5. } else {
  6. ifr.onload  = function() { alert('loaded'); };
  7. }
  8. document.body.appendChild(ifr);
var ifr = document.createElement('iframe');
ifr.src = 'http://b.a.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。

  1. var ifr1 = document.getElementById('ifr1');
  2. var ifr1win = window.frames[0];
  3. ifr1win.frameElement === ifr1;   // true
  4. ifr1win === ifr1;    // false

//////////////////////////////////////////// 运用 ////////////////////////////////////////////////////////////

var frames= document.getElementsByTagName("iframe");
            for (var i = 0; i < frames.length; i++) {
            //alert("frameID:" + frames[i].id + "  tabid:" + tabid);
            //var frame=frames[i];           
            }
            */

//获得iframe的对象fram
            var fram = document.getElementById(tabid);
            //src = params[1];
            //document.fram.location.reload(); //刷新框架内的页面

//获得iframe的window对象contentWindow,以及js调用iframe内的js函数
            fram.contentWindow.test11(); //test11() 为目标框架内的页面js函数

JS操作iframe的更多相关文章

  1. 原生JS操作iframe里的dom

    转:http://www.css88.com/archives/2343 一.父级窗口操作iframe里的dom JS操作iframe里的dom可是使用contentWindow属性,contentW ...

  2. JS 操作iframe

    很多人一直都有个想法,要是可以随心所欲的操作iframe就好了.这样静态页面也就有了相当于后台动态页面php,jsp,asp中include,require实现统一多页面布局的能力. 通过Javasc ...

  3. [置顶] js操作iframe兼容各种浏览器

    在做项目时,遇到了操作iframe的相关问题.业务很简单,其实就是在操作iframe内部某个窗体时,调用父窗体的一个函数.于是就写了两个很简单的htm页面用来测试,使用网上流行的方法在谷歌浏览器中始终 ...

  4. js操作iframe总结

    一 在父页面操作子页面   IE下操作IFrame内容的代码: document.frames["MyIFrame"].document.getElementById(" ...

  5. JS操作iframe元素

    1.  demo1.html页面中有个iframe元素,iframe元素的src是iframe1.html,怎么在demo1.html页面中操作iframe1.html页面 答曰:demo1.html ...

  6. js操作iframe框架时应该屡清楚的一些概念

    1.获取iframe的window对象 存在跨域访问限制. iframeElement.contentWindow 兼容 2.获取iframe的document对象 存在跨域访问限制. chrome: ...

  7. js操作Iframe非当前最上层窗体

    如果当前窗口不是最上层窗口(比如是在Iframe中),那么就把自己变为最上层窗口.  <script language="javascript" type="tex ...

  8. 百度地图和js操作iframe

    document.getElementById("ifarme-63").contentWindow.document.getElementById("qksv" ...

  9. JS操作未跨域iframe里的DOM

    这里简单说明两个方法,都是未跨域情况下在index.html内操作b.html内的 DOM. 如:index.html内引入iframe,在index内如何用JS操作iframe内的DOM元素? 先贴 ...

随机推荐

  1. Centos 安装 neo4j

    This is experimental and not considered safe for production. You have been warned. Please note that ...

  2. logistic回归模型

    一.模型简介 线性回归默认因变量为连续变量,而实际分析中,有时候会遇到因变量为分类变量的情况,例如阴性阳性.性别.血型等.此时如果还使用前面介绍的线性回归模型进行拟合的话,会出现问题,以二分类变量为例 ...

  3. DES MAC PIN HEX

    /* void DesEncrypt( UCHAR * auchInput,UCHAR * auchKey,UCHAR * auchOutput=NULL); Function: DesEncrypt ...

  4. CentOS7下ifconfig command not found

    执行命令 yum install net-tools

  5. PHP基础示例:商品信息管理系统v1.1[转]

      实现目标:使用php和mysql写一个商品信息管理系统,并带有购物车功能 一.创建数据库和表 1.创建数据库和表:demodb 2.创建表格:goods 字段:商品编号,商品名称,商品类型,商品图 ...

  6. PDF 补丁丁 0.4.2.1063 测试版发布:新增检查新版本功能

    新版本增加了检查新版本的功能(程序不自动联网,请手动检查). 补丁丁拥趸们,你们可以更方便地用上程序的最新测试版本啦! 新测试版还修复了旧测试版的一些问题,欢迎下载试用哦!

  7. Windows下Apache的优化

    (1)首选查看apache的工作模式 windows下的查看apache的工作模式命令: httpd -l 如果列出mod_win32.c,则表示是 win32.c 工作方式. 列出的全部内容如下所示 ...

  8. Solr安装入门、查询详解

    Solr安装入门:http://www.importnew.com/12607.html 查询详解:http://www.360doc.com/content/14/0306/18/203871_35 ...

  9. Invalid byte 3 of 3-byte UTF-8 sequence

    用maven编译,tomcat启动时报错:IOException parsing XML document from class path resource [applicationContext.x ...

  10. Centos搭建SVN服务器三步曲

    搭建SVN服务,有效的管理代码,以下三步可以快速搞定.1.安装 #yum install subversion 判断是否安装成功#subversion -v svnserve, version 1.6 ...