代码改变世界

不询问关闭窗口

2006-12-15 13:33  努力学习的小熊  阅读(3096)  评论(0编辑  收藏

window.opener=null;

window.close();

这样就不会出现询问“您是否关闭当前页面”的消息框了。

 

下面是网上搜索来的内容:

 

网页在打开一定时间内自动关闭

<script language="javascript">
<!--
function closewin(){
setTimeout("self.close()",5000)
}
//-->
<body onload="closewin()">

 

关键在这里setTimeout("self.close()",5000),它使窗口在5000毫秒后关闭,但是实验一下发现到了5秒它会出现一个对话框,询问用户是否关闭该页

function close2(){
window.opener=null;
setTimeout("self.close()",5000);
}
<input type="button" value="
关闭" onclick="close2()">


保存成网页,点那个按钮,5秒后,网页自动关闭了,而且没有提示.两者差在这一句window.opener=null

 

下面的代码是网页打开后弹出一个可控制大小的新窗口然后在2秒以后老窗口自动关闭.这里的2秒可以设置为更短的时间,就接近与直接打开一个可控制大小和有无边框,地址栏等等的窗口,在有些场合也许很合适.


<script LANGUAGE="JavaScript">
function open1()
{
window.open('http://127.0.0.1/index.asp...,','toolbar=no,menubar=no,location=no,height=650,width=980');
}
<body onUnload="open1();">
<script LANGUAGE="JavaScript">
window.setTimeout(window.close,2000);
window.opener=null

 

而弹出新窗口,N秒后新窗口自动关闭是简单的,只需要在新窗口中加如入


<script language="JavaScript">
setTimeout("window.close()",2000);


   
第三四段代码分别解决了弹出窗口后父窗口和子窗口的无提示自动关闭.

 

 

window.openerjswindow的一个属性,它返回的是打开当前窗口的窗口对象.如果窗口A弹出一个窗口B,那么在Bwindow.opener就是窗口对象A.

 

这是JAVASCRIPT参考手册里对于opener的描述

当一个窗口用open方法打开了一个新窗口的时候,opener属性就生效了,直到被打开的窗口关闭时失效.
你可以通过opener在被打开的窗口中对父窗口进行一系列操作.
你可以在一个窗口中打开一个新窗口,新窗口又打开另外一个新窗口,新窗口又打开另外一个新窗口.....最后得到的是一串新窗口,然而每一个窗口的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,写入这些


<script language="JavaScript">
function ccc()
{
window.opener.document.bgColor='red';
}
function xxx()
{
window.opener.document.location='http://angel1949.blogcn.co...
}

<input type="submit" name="Submit" value="
变色" onClick="ccc()">
<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的时候,父窗口失去了原来的优先级,被浏览器认为是一个普通的窗口,所以可以象子窗口一样不需要提示而自动关闭了