window.opener浅析(续网页无提示自动关闭)

本文探讨了如何使用JavaScript的window.opener属性实现无提示自动关闭窗口的功能,并详细解析了opener属性的工作原理及其在父子窗口间的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

Whenasourcedocumentopensadestinationwindowbycallingtheopenmethod,theopenerpropertyspecifiesthewindowofthesourcedocument.Evaluatetheopenerpropertyfromthedestinationwindow.
Thispropertypersistsacrossdocumentunloadintheopenedwindow.
Youcanchangetheopenerpropertyatanytime.
YoumayuseWindow.opentoopenanewwindowandthenuseWindow.openonthatwindowtoopenanotherwindow
,andsoon.Inthisway,youcanendupwithachainofopenedwindows,eachofwhichhasanopenerpropertypointingtothewindowthatopenedit.
Communicatorallowsamaximumof
100windowstobearoundatonce.Ifyouopenwindow2fromwindow1andthenaredonewithwindow1,besuretosettheopenerpropertyofwindow2tonull.ThisallowsJavaScripttogarbagecollectwindow1.Ifyoudonotsettheopenerpropertytonull,thewindow1objectremains,eventhoughit'snolongerreallyneeded.


我大概翻译一下
当一个窗口用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,写入这些

<scriptlanguage="JavaScript">
functionccc()
...{
window.opener.document.bgColor
='red';
}

functionxxx()
...{
window.opener.document.location
='http://angel1949.blogcn.co...
}

<inputtype="submit"name="Submit"value="变色"onClick="ccc()">
<inputtype="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:

没学过JS,临时找点资料来看,不知道对于opener在关闭窗口时的作用解释的是否准确.但是通过这个了解了opener的用法也是不错的嘛~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值