window.opener=null; window.close(); 这样就不会出现询问“您是否关闭当前页面”的消息框了。
网页在打开一定时间内自动关闭: <script language="javascript"> <!-- function closewin(){ setTimeout("self.close()",5000) } //--> <body onload="closewin()"> 关键在这里setTimeout("self.close()",5000),它使窗口在5000毫秒后关闭,但是实验一下发现到了5秒它会出现一个对话框,询问用户是否关闭该页
点按钮,5秒后,网页自动关闭了,而且没有提示 function close2(){ window.opener=null; setTimeout("self.close()",5000); } <input type="button" value="关闭" onclick="close2()"> 两者差在这一句: window.opener=null;
下面的代码是网页打开后弹出一个可控制大小的新窗口然后在2秒以后老窗口自动关闭.这里的2秒可以设置为更短的时间,就接近与直接打开一个可控制大小和有无边框,地址栏等等的窗口,在有些场合也许很合适.
父窗口: <script LANGUAGE="JavaScript" type="text/javascript"> function open1(){ alert('I am parent window'); window.open('http://localhost/test_close/test_close/WebForm1.aspx', 'newwindow', 'height=500, width=500, toolbar =no, menubar=no, scrollbars=no, resizable=no, location=no, status=no'); } </script>
子窗口: 1. 注意是window.opener.opener,有两个opener <script language="JavaScript"> function ch() { alert('I am sub window'); window.opener.opener=null; window.opener.close(); //window.opener.document.location='http://www.163.com';//设置父窗口的指向 } </script> 2. 注意调用该function的button是 type="button", 不可以用type="submit". <input type="button" onclick="ch()" value="cc"> 而弹出新窗口,N秒后新窗口自动关闭是简单的,只需要在弹出的新窗口中加入: <script language="JavaScript"> window.opener=null; setTimeout("window.close()",2000); </script>
JAVASCRIPT参考手册里对于opener的描述: 当一个窗口用open方法打开了一个新窗口的时候,opener属性就生效了,直到被打开的窗口关闭时失效. 你可以通过opener在被打开的窗口中对父窗口进行一系列操作 你可以在一个窗口中打开一个新窗口,新窗口又打开另外一个新窗口,新窗口又打开另外一个新窗口..最后得到的是一串新窗口,然而每一个窗口的opener属性都指向打开它的那个窗口. 设计者最多允许打开100个这样的窗口.当你通过open打开了一个新窗口后, 确保在新窗口中将opener属性设置为null(空).如果不这样的话,会使浏览器持续的保留每个opener的值,直至资源耗尽.
JS参考手册的描述中一再强调open动作完成后将opener设置为空,也就是window.opener=null,
关于window.opener在无提示关闭窗口的作用,是不是可以这么解释: 浏览器认为子窗口与父窗口的优先级是不同的,子窗口可以随意关闭而父窗口可能有比较重要的内容而需要用户同意才可以关闭; 当window.opener=null的时候,父窗口失去了原来的优先级,被浏览器认为是一个普通的窗口,所以可以象子窗口一样不需要提示而自动关闭了 |