`
pyleaf
  • 浏览: 37990 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

[转]window.opener 与 window.parent 的区别

阅读更多

http://qiu.fengqi.blog.163.com/blog/static/31729042201121424325304/?fromdm&fromSearch&isFromSearchEngine=yes

 

我们如果要用到iframe的值传到另一框架就要用到window.opener.document.getElementByIdx(name).value = uvalue;这种形式哦。

window.parent能获取一个框架的父窗口或父框架。顶层窗口的parent引用的是它本身。

可以用这一点特性来判断这个窗口是否是顶层窗口。如:

Code
function IsTopWindow( win )
{
    if( win.parent == win ) return true;
    else return false;
}
window.opener引用的是window.open打开的页面的父页面。


opener即谁打开我的,比如A页面利用window.open弹出了B页面窗口,那么A页面所在窗口就是B页面的opener,在B页面通过opener对象可以访问A页面。
parent表示父窗口,比如一个A页面利用iframe或frame调用B页面,那么A页面所在窗口就是B页面的parent。
在JS中,window.opener只是对弹出窗口的母窗口的一个引用。比如:

a.html中,通过点击按钮等方式window.open出一个新的窗口b.html。那么在b.html中,就可以通过 window.opener(省略写为opener)来引用a.html,包括a.html的document等对象,操作a.html的内容。假如这个引用失败,那么将返回null。所以在调用opener的对象前,要先判断对象是否为null,否则会出现“对象为空或者不存在”的JS错误。

window.opener 返回的是创建当前窗口的那个窗口的引用,比如点击了a.htm上的一个链接而打开了b.htm,然后我们打算在b.htm上输入一个值然后赋予a.htm上的一个id为“name”的textbox中,就可以写为:
window.opener.document.getElementByIdx("name").value = "输入的数据";

 

======================================================================

 

window.parent.location.reload()
让打开这个窗口的父窗口刷新,然后本子窗口关闭!

window.parent.HideThisDiv()
应该是让打开这个窗口的父窗口的某个DIV影藏

javascript:history.back()
就是后退啊!和浏览器里面的后退按钮一样!javascript:history.back(-1)就是后退一页  

 

=========================================

 

前边用window.opener=null来完成了窗口的无提示自动关闭.简单查了一下,window.opener是js中window的一个属性,它返回的是打开当前窗口的窗口对象.如果窗口A弹出一个窗口B,那么在B中window.opener就是窗口对象A.
这是JAVASCRIPT参考手册里对于opener的描述

window.opener 与 window.parent 的区别 - 秋分起 - 再回首我心依旧    When a source document opens a destination window by calling the open method, the opener property specifies the window of the source document. Evaluate the opener property from the destination window.
window.opener 与 window.parent 的区别 - 秋分起 - 再回首我心依旧    This property persists across document unload in the opened window.
window.opener 与 window.parent 的区别 - 秋分起 - 再回首我心依旧    You can change the opener property at any time.
window.opener 与 window.parent 的区别 - 秋分起 - 再回首我心依旧    You may use Window.open to open a new window and then use Window.open on that window to open another window
,and so on. In this way, you can end up with a chain of opened windows, each of which has an opener property pointing to the window that opened it.
window.opener 与 window.parent 的区别 - 秋分起 - 再回首我心依旧    Communicator allows a maximum of
100 windows to be around at once.If you open window2 from window1 and then are done with window1, be sure to set the opener property of window2 to null. This allows JavaScript to garbage collect window1. If you do not set the opener property to null, the window1 object remains, even though it's no longer really needed.

我大概翻译一下
当一个窗口用open方法打开了一个新窗口的时候,opener属性就生效了,直到被打开的窗口关闭时失效.
你可以通过opener在被打开的窗口中对父窗口进行一系列操作.
你可以在一个窗口中打开一个新窗口,新窗口又打开另外一个新窗口,新窗口又打开另外一个新窗口.....最后得到的是一串新窗口:em215:,然而每一个窗口的opener属性都指向打开它的那个窗口.
设计者最多允许打开100个这样的窗口.当你通过open打开了一个新窗口后,确保在新窗口中将opener属性设置为null(空).如果不这样的话,会使浏览器持续的保留每个opener的值,直至资源耗尽.

JS参考手册还给出了几个例子,我把我理解的部分演示一下~

首先建立1.htm,它用open方法打开2.htm,代码如下

<script language="JavaScript">
window.open('2.htm', ', 'width=225,height=235,resizable=1,scrollbars=auto');

建立2.htm,写入这些

window.opener 与 window.parent 的区别 - 秋分起 - 再回首我心依旧<script language="JavaScript">
window.opener 与 window.parent 的区别 - 秋分起 - 再回首我心依旧
function ccc()
window.opener 与 window.parent 的区别 - 秋分起 - 再回首我心依旧window.opener 与 window.parent 的区别 - 秋分起 - 再回首我心依旧
...{
window.opener 与 window.parent 的区别 - 秋分起 - 再回首我心依旧window.opener.document.bgColor
='red';
window.opener 与 window.parent 的区别 - 秋分起 - 再回首我心依旧}

window.opener 与 window.parent 的区别 - 秋分起 - 再回首我心依旧
function xxx()
window.opener 与 window.parent 的区别 - 秋分起 - 再回首我心依旧window.opener 与 window.parent 的区别 - 秋分起 - 再回首我心依旧
...{
window.opener 与 window.parent 的区别 - 秋分起 - 再回首我心依旧window.opener.document.location
='http://angel1949.blogcn.co...
window.opener 与 window.parent 的区别 - 秋分起 - 再回首我心依旧}
window.opener 与 window.parent 的区别 - 秋分起 - 再回首我心依旧
window.opener 与 window.parent 的区别 - 秋分起 - 再回首我心依旧<input type="submit" name="Submit" value="变色" onClick="ccc()">
window.opener 与 window.parent 的区别 - 秋分起 - 再回首我心依旧<input type="submit" name="Submit1" value="转向" onClick="xxx()">


打开1.htm我们会看到弹出的2.htm,点击2.htm中第一个按钮,1.htm的背景颜色变为了红色,点第二个按钮,1.htm被重定向到了指定的网址.这里通过2.htm来控制1.htm的行为正是利用了opener.

JS参考手册的描述中一再强调open动作完成后将opener设置为空,也就是window.opener=null,但是哪也没说它有关闭窗口时不提示这么个用法啊.比较前篇中父子窗口自动关闭的代码会发现,子窗口中是不需要把window.opener设置为空也可以无提示自动关闭的,而父窗口必须有这一句.关于window.opener在无提示关闭窗口的作用,是不是可以这么解释,浏览器认为子窗口与父窗口的优先级是不同的,子窗口可以随意关闭而父窗口可能有比较重要的内容而需要用户同意才可以关闭;当window.opener=null的时候,父窗口失去了原来的优先级,被浏览器认为是一个普通的窗口,所以可以象子窗口一样不需要提示而自动关闭了:em29:

分享到:
评论

相关推荐

    showModalDialog open弹出子窗口操作parent、opener父窗口及跨域处理

    3&gt; IE与FireFox对两个弹出窗口在跨域时的解析也有不同:通过window.dialogArguments操作父窗口时,在IE下不需要指定document.domain而在FireFox下则正好相反需要指定才能生效;采用opener方式操作父窗口时都不需要...

    javascript window.opener的用法分析

    window.opener 的用法 window.opener 返回的是创建当前窗口的那个窗口的引用,比如点击了a.htm上的一个链接而打开了b.htm,然后我们打算在b.htm上输入一个值然后赋予a.htm上的一个id为“name”的... opener.parent

    jsp 刷新父页面

    window.opener.location.href = window.opener.location.href 刷新以winodw.showModelDialog()方法打开的窗口 window.parent.dialogArguments.document.execCommand('Refresh'); 或 Response.Write("&lt;script&gt;...

    解析jquery获取父窗口的元素

    (“#父窗口元素ID”,window.parent.document); 对应javascript版本为window.parent.document.getElementByIdx_x(“父窗口元素ID”);取父窗口的元素方法:$(selector, window.parent.document);那么你取父窗口的父...

    JS window对象的top、parent、opener含义介绍

    例如:A页面通过window.open()方法弹出了B页面,在B页面中就可以通过opener来引用A页面,这样就可以通过这个对象来对A页面进行操作。 3.parentparent用于在iframe,frame中生成的子页面中访问父页面的对象。例如:A...

    javascript关于open.window子页面执行完成后刷新父页面的问题分析

    本文实例分析了javascript关于open.window子页面执行完成后刷新父页面的方法。分享给大家供大家参考。具体分析如下: 主页面: &lt;input id=btnAdd type=button onclick=openWin(); value=添加 /&gt; 在js中有如下...

    javascript提示类

    某页面中button按钮事件写代码如下: ... Response.Write("&lt;script&gt;window.open('" + Str1 + "','_blank');window.showModalDialog('close.htm');...&lt;body onload="window.parent.opener=null;window.close();"&gt; &lt;/html&gt;

    js中opener与parent的区别详细解析

    opener即谁打开我的,比如A页面利用window.open弹出了B页面窗口,那么A页面所在窗口就是B页面的opener,在B页面通过opener对象可以访问A页面。 parent表示父窗口,比如一个A页面利用iframe或frame调用B页面,那么A...

    子窗体与父窗体传值示例js代码

    代码如下: //返回值给父窗体 function returnParent(value) {//获取子窗体返回值 var parent = window.dialogArguments; //获取父页面 //parent.location.reload(); //刷新父页面 if (parent != null && parent != ...

    firefox下frameset取不到值的解决方法

     js操作frame详细解说,window.opener和window.parent的区别 frame框架里的页面要改其他同框架下的页面或父框架的页面就用parent window.opener引用的是window.open打开的页面的父页面。 window.frames对象可以引用...

    JS子父窗口互相操作取值赋值的方法介绍

    $(“#父窗口元素ID”,window.parent.document); 对应javascript版本为window.parent.document.getElementByIdx_x(“父窗口元素ID”); 取父窗口的元素方法:$(selector, window.parent.document);那么你取父窗口的...

    js AspxButton的客户端操作

    javascript调用父窗口(父页面)的方法 window.parent与window.opener的区别 javascript调用主窗口方法 1: window.parent 是iframe页面调用父页面对象 2: window.opener 是window.open 打开的子页面调用父页面对象...

    JS刷新父页面 父窗口

    // 刷新父页面。此段代码放在被弹出的页面 function refreshOpener() { ... if (win.opener) win.opener.location.reload();//或parent.location.reload(); } catch (ex) { } } ......................

    javascript常用对象梳理

    熟练掌握window对象的status、location、name、self、opener属性的使用 Window对象是客户端javascript最高层对象之一,只要打开浏览器窗口,不管该窗口中是否有打开的网页,当遇到BODY、FRAMESET或FRAME元素时,...

    js 无提示关闭浏览器页面的代码

    方法一: 代码如下: top.window.opener=null; top.window.open(“”,”_self”); top.window.close(); 方法二: 代码如下: top.window.opener = top; top.window.open(”,’_self’,”); top.window.close(); _blank...

    js调用父框架函数与弹窗调用父页面函数的简单方法

    window.opener引用的是window.open打开的页面的父页面。 window.frames对象可以引用iframe里的页面,也可以引用frameset里的页面. 可以这样 window.frames[0].document.getElementById(‘xx'); 可以这样 window....

    静态页面的值传递(三部曲)

    父窗口parent.htm打开子窗口son.htm 子窗口可以通过window.opener指向父窗口.这样可以访问父窗口的对象. 优点:取值方便.只要window.opener指向父窗口,就可以访问所有对象. 不仅可以访问值,还可以访问父窗口的方法.值...

    107个常用javascript语句

    72.JS中指定当前打开窗口的父窗口:window.opener,支持opener.opener...的多重继续. 73.JS中的self指的是当前的窗口 74.JS中状態栏显示內容:window.status="內容" 75.JS中的top指的是框架集中最顶层的框架 76.JS中...

    javascript函数的解释

    72.JS中指定当前打开窗口的父窗口:window.opener,支持opener.opener...的多重继续. 73.JS中的self指的是当前的窗口 74.JS中状态栏显示内容:window.status="内容" 75.JS中的top指的是框架集中最顶层的框架 76.JS中...

Global site tag (gtag.js) - Google Analytics