iframe.contentWindow 属性:关于contentWindow和contentDocument区分

定义和用法

  contentDocument 属性能够以 HTML 对象来返回 iframe 中的文档,可以通过所有标准的 DOM 方法来处理被返回的对象

  语法:frameObject.contentWindow,或者 iframeObject.contentWindow(不是jquery对象)

  用iframe嵌套页面时,如果父页面要获取子页面里面的内容,可以使用contentWindow或者contentDocument,其区别如下:

  1、contentWindow  这是个只读属性,返回指定的iframe的窗口对象。它虽然不是标准的一部分,但各个主流浏览器都支持。

  2、contentDocument  Firefox 支持,IE6,IE7都不支持,IE8开始支持,需要如此访问 document.frames[‘J_mainframe‘].document。

  兼容获取document对象:

var getIFrameDoc = function(){
    var iobj = document.createElement("iframe");
    document.getElementsByTagName("body")[0].appendChild(iobj);
    return iobj.contentDocument || iobj.contentWindow.document;
}

  基本使用:

1、document.getElementById("myiframe").contentWindow,得到iframe对象后,就可以通过contentWindow得到iframe包含页面的window对象,然后就可以正常访问页面元素了;

2、$("#myiframe")[0].contentWindow,jquery选择器获得iframe,先把jquery对象转换为DOM对象,或者使用get()方法转换;

3、$("#myiframe")[0].contentWindow.$("#dd").val(),可以在得到iframe的window对象后接着使用jquery选择器进行页面操作;

4、$("#myiframe")[0].contentWindow.username="zhangsan"; 可以通过这种方式向iframe页面传递参数,在iframe页面window.username就可以获取到值,username是自定义的全局变量

5、在iframe页面通过parent可以获得主页面的window,接着就可以正常访问父亲页面的元素了;

6、parent.$("#frame_A")[0].contentWindow.document.getElmentById("#frame_B"); 同级iframe页面之间调用,需要先得到父亲的window,然后调用同级的iframe得到window进行操作;

//在子级iframe设置 父级 iframe ,或 孙级 iframe 高度。
function showIframeH(){
    var parentWin = parent.document.getElementById("test");
    if(!parentWin) return false;

    var sub = parentWin.contentWindow.document.getElementById("test2");
    if(!sub) return false;

    var thirdHeight = sub.contentWindow.document.body.offsetHeight; //第三层 body 对象

    sub.height = thirdHeight; //设置第二层 iframe 的高度

    var secondHeight = parentWin .contentWindow.document.body.offsetHeight; //第二层 body 对象
    parentWin .height = secondHeight; //设置第一层 iframe 的高度
}

一、在使用iframe的页面时,要操作这个iframe里面的DOM元素可以用:contentWindow、contentDocument

1、先获取iframe里面的window对象,再通过这个对象,获取到里面的DOM元素

例子:

var ifr = document.getElementById("iframe");
ifr.contentWindow.document.getElementById("XXXXX")

<iframe src="a.html" id=""></iframe>

  ifr.contentWindow 这里,返回的是iframe的window对象,所以后面可以接着调用document方法,再接着调用getElementByTagName。那么就可以对iframe里面的元素进行操作了。

二、在iframe本页面,要操作这个iframe的父页面的DOM元素(即嵌套这个iframe的页面)可以用:

  window.parent、window.top(这里的TOP是获取的顶层,即有多层嵌套iframe的时候使用)

var ifr = document.getElementByTagName("iframe");
ifr.parent.document.getElementById("XXXXX")

<iframe src="a.html" id=""></iframe>

实例:

  top.$("iframe[name=‘iframeWindow‘]")[0].contentWindow.$("#inside_tableElement"),这样才能获取到iframe里的元素,

  注意:top.$("iframe[name=‘iframeWindow‘]").eq(0).$("#inside_tableElement"),是获取不到的

  再可以看看之前写的这篇博客:jquery 获取父窗口的元素、父窗口、子窗口

原文地址:https://www.cnblogs.com/my2018/p/10203583.html

时间: 2024-08-29 12:44:31

iframe.contentWindow 属性:关于contentWindow和contentDocument区分的相关文章

IFrame与window对象(contentWindow)

var detialIframe=document.all("detialIframe"); 此处的IFrame是从document取得的,即作作为document的子对象出现,虽然是文档(document)对象,但由于它是独立的页面,因而拥有自己的事件,拥有自己的窗口对象(contentWindow); Window.detialIframe 或Window.frames(detialIframe)将直接取得IFrame的Window对象 IFRAME IFRAME 元素也就是文档中

jquery得到iframe src属性值的方法

这篇文章主要介绍了jquery得到iframe src属性值的方法,很简单,很实用,需要的朋友可以参考下 取得iframe src属性的的值: Html代码 <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>jquery</title>

获取子iframe的属性

第一种方法: <iframe name="iframeName"  src="http://www.test.com"></iframe> // name="iframeName" 取值 window.frames[iframeName] 第二种方法: <iframe id="iframeId"  src="http://www.test.com"></iframe

JavaScript对iframe的DOM操作

在IE6.IE7中,我们可以使用 document.frames[ID].document 来访问iframe子窗口中的document对象,可是这是不符合W3C标准的写法,也是IE下独有的方法,在Firefox下却不可以使用,Firefox下使用的是符合W3C标准的 document.getElementById(ID).contentDocument 方法,今天我在写实例的时候,通过IE8进行测试,IE8也是使用的符合W3C标准的 document.getElementById(ID).co

contentWindow,contentDocument, docuemnt ,window,self,top,parent,opener的关系

前言 最近又开始开发公司的后台管理系统,由于整个页面的架构是通过iframe来进行区域划分,所以经常需要通过 父窗口来调用子窗口方法或者子窗口获取父窗口变量等窗口的情况,所以整理一下相关的用法,避免遗忘! 一.top,parent,self,window,opener之间的区别和关系 self: 当前窗口的引用 与winow,window.self等价. top: 顶层窗口对像 与window.top等价:如果窗口本身就处于顶层,则top与window,window.top对象等价. paren

contentWindow和contentDocument

[contentDocument] W3C的标准告诉我们,可以通过Dom对象的contentDocument属性来返回文档对象.doc= document.getElementById('J_mainframe' ).contentDocumentIE6,IE7都不支持,IE8开始支持,需要如此访问 document.frames['J_mainframe'].document; [contentWindow]contentWindow属性,这是个只读属性,返回指定的iframe的窗口对象.它虽

window对象(contentWindow)

IFRAME IFRAME 元素是文档中的文档 window 对象 浏览器会在其打开一个 HTML 文档时创建一个对应的 window 对象.如果一个文档定义了一个或多个框架(即,包含一个或多个 frame 或 iframe 标签),浏览器就会为原始文档创建一个 window 对象,再为每个框架创建额外的 window 对象.这些额外的对象是原始窗口的 子窗口,可能被原始窗口中发生的事件所影响.如果想要创建新窗口(以及对应的 window 对象),可以使用像 open, showModalDia

iframe学习(一)之 窗口交互

用iframe嵌套页面时,如果父页面要获取子页面里面的内容,可以使用contentWindow或者contentDocument 语法 contentWindow:iframeObject.contentWindow contentDocument:iframeObject.contentDocument 区别 1.contentWindow  这是个只读属性,返回指定的iframe的窗口对象.它虽然不是标准的一部分,但各个主流浏览器都支持.(返回指定iframe的window对象,所有主流浏览

Web前端之iframe详解

iframe基本内涵 通常我们使用iframe直接直接在页面嵌套iframe标签指定src就可以了. <iframe src="demo_iframe_sandbox.htm"></iframe> 但是,有追求的我们,并不是想要这么low的iframe. 我们来看看在iframe中还可以设置些什么属性 iframe常用属性: 1.frameborder:是否显示边框,1(yes),0(no) 2.height:框架作为一个普通元素的高度,建议在使用css设置.