iframe学习(一)之 窗口交互

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

语法

contentWindow:iframeObject.contentWindow

contentDocument:iframeObject.contentDocument

区别

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

2、contentDocument 能够以 HTML 对象来返回 iframe 中的文档,可以通过所有标准的 DOM 方法来处理被返回的对象  Firefox 支持,IE6,IE7都不支持,IE8开始支持,需要如此访问 document.frames[‘J_mainframe‘].document。(返回指定iframe的document对象,部分浏览器支持)

兼容获取document对象:

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

或者

function changeStyle(){
    var x=document.getElementById("myframe");
    var y=(x.contentWindow || x.contentDocument);
    if (y.document)y=y.document;
    y.body.style.backgroundColor="#0000ff";
}

基本使用

父窗口获取子窗口的信息

获取子窗口的window对象:

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

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

父窗口和子窗口交互 && 子窗口和子窗口交互

父窗口操作子窗口中元素:

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

父窗口向子窗口传递参数:

$("#myiframe")[0].contentWindow.username="zhangsan"; 可以通过这种方式向iframe页面传递参数,先获取子窗口的window,然后将想要传递的数据挂载在window对象上

子窗口获取父窗口传递的参数:

在iframe页面window.username就可以获取到值,username是自定义的全局变量;

子窗口操作父窗口元素:

parent.document.getElementById("test"); 在iframe页面通过parent可以获得主页面的window,接着就可以正常访问父亲页面的元素了;

top.document.getElementById("test");在iframe页面通过top获取顶层,即有多层嵌套iframe的时候使用;

实例:

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

同级子窗口之间相互调用:

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

参考

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

原文地址:https://www.cnblogs.com/kunmomo/p/12120583.html

时间: 2024-10-11 00:50:57

iframe学习(一)之 窗口交互的相关文章

iframe学习(四)之窗口跨域

什么是跨域? 跨域问题是浏览器同源策略限制,当前域名的JavaScript只能读取同域下的页面对象,这也是JavaScript出于安全方面的考虑. 通俗的来说,跨域可以理解为:从一个域名访问另一个域名,出于安全考虑,浏览器不允许这么做. 跨域种类 什么时候我们认为发生了跨域呢?或者说什么情况下“浏览器”是不允许我们访问的呢? 不同域名 - 禁止 例子:http://www.baidu.com 与 http://www.h5course.com 不同子域 - 禁止 例子:http://www.ba

Javascript学习--------认识window窗口对象

window对象: Window 对象表示浏览器中打开的窗口. 可以通过window对象设置窗口的大小,位置等. 还可以控制是否加载网页等. window对象集合: 集合 描述 frames[] 返回窗口中所有命名的框架. 该集合是 Window 对象的数组,每个 Window 对象在窗口中含有一个框架或 <iframe>.属性 frames.length 存放数组 frames[] 中含有的元素个数.注意,frames[] 数组中引用的框架可能还包括框架,它们自己也具有 frames[] 数

【Qt学习笔记】窗口部件整理

关于Qt中窗口部件的学习 今天开始学习Qt的窗口部件,领略一下Qt的神奇之处,记得2012年的那年冬天,我还学Java呢,现在基本上和Java说再见了,不过对于嵌入式的开发Qt还是举足轻重的,我想趁着假期的时间,好好学习.考研之后发现一个问题,无论当初你学的有多明白,总会忘记,最好的方法就是将他们记录下来,甚至写下你当时的心情,如果有一天你需要了,回过头来看看,是一笔不错的财富. 1. QDialog类对话框 1.1 模态和非模态对话框 对于对话框,有模态(modal)和非模态(modeless

通过js检测到iframe,使父窗口重定向到index -----------???----------------------

通过js检测到iframe,使父窗口重定向到index -----------???---------------------- 如果本身已将在iframe中,那么重定向的页面应该直接添加到父级iframe中-----???----

用jQuery在IFRAME里取得父窗口的某个元素的值

收集网上的一些示例: 用jQuery在IFRAME里取得父窗口的某个元素的值 只好用DOM方法与jquery方法结合的方式实现了 1.在父窗口中操作 选中IFRAME中的所有单选钮 $(window.frames["iframe1"].document).find("input[@type='radio']").attr("checked","true"); 2.在IFRAME中操作 选中父窗口中的所有单选钮 $(window

利用JQuery在iframe中获取父亲窗口的元素方法

$(window.parent.document).find("#blackbg").css("opacity","0");$(window.parent.document).find("#divdyiframe").css("display","none");利用Javascript在iframe中获取父亲窗口的元素方法window.parent或者是window.toptop永远指向

session登录超时跳出iframe页至登录窗口

//当我们用权限框架控制登录超时跳至某一个页面时主页面都没什么问题:iframe会在当前窗口下再开一个会话很显然这不是我们想要达到的效果 在登录页中加入此判断即可 1 $(function(){ 2 3 //iframe session超时判断URL是否为顶级窗口 4 if (window.top!=null && window.top.document.URL!=document.URL){ 5 window.top.location= document.URL; 6 } 7 8 })

jQuery在iframe里取得父窗口的某个元素的值

提供一款jQuery在iframe里取得父窗口的某个元素的值实现,这个iframe用js也差不多,有需要的朋友可以参考一下. 1.在父窗口中获取指定iframe(testiframe) id 为 testid 的class $(window.frames["testiframe"].document).find("#testid").attr('class'); 2.在IFRAME中获取父窗口中id为testid的class $(window.parent.docu

#学习笔记#JSP数据交互

#学习笔记#JSP数据交互 数据库的使用方式: 当用户在第一个页面的查询框输入查询语句点提交的时候我们是用什么样的方式完成这个查询的? 答:我们通过在第一个页面提交表单的形式,真正的数据库查询时在第二个服务器页面进行的,第一个request对象里面放置了查询的内容,我们可以通过request.getParameter()方法获得,在服务器内我们之间把所有的查询直接用html语句输出是很困难的,所以我们把查询的结果赋给request的Attribute,使用request.sex`x`x``tAt