当前位置: 代码迷 >> Web前端 >> 封锁浏览器窗口深入研究
  详细解决方案

封锁浏览器窗口深入研究

热度:140   发布时间:2012-10-30 16:13:36.0
关闭浏览器窗口深入研究

一,研究的起因

?

今天中午左右,Software@China群内朋友问:如何关闭firefox窗口,笔者尝试几次,均未能成功关闭firefox窗口,

?

二,测试浏览器

?

1,chrome5.0

2,ie7

3,opera10.5

4,safari5.0

?

三,测试

?

序号 关闭代码 需要确认 无任何作用 无需确认 测试
1 window.close() IE7 firefox,chrome,
safari
Opera Close
2 window.opener=null;
window.open('','_self');
window.close();
firefox IE7,Opera,
chrome,safari
Close
3 window.open('','_self');
window.close();
firefox IE7,Opera,
chrome,safari
Close
4 window.opener=null;
window.close();
IE7 firefox,safari chrome,Opera Close
5 var opened=window.open('about:blank','_self');
opened.opener=null;
opened.close();
firefox safari,IE7,
chrome,Opera
Close
6 var opened=window.open('about:blank','_self');
opened.close();
safari,firefox IE7,
chrome,Opera
Close

?

?

?

?

?

测试源码:

?

?

?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE>关闭浏览器窗口深入研究 by sunflower</TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT="">
	<script>
	</script>
 </HEAD>
 <BODY>
	<table border="1" CELLPADDING="0" CELLSPACING="0">
		<tr height="15px">
			<th >
				序号
			</th>
			<th >
				关闭代码
			</th>
			<th width="70px">
				需要确认
			</th>
			<th>
				无任何作用
			</th>
			<th>
				无需确认
			</th>
			<th>
				测试
			</th>
		</tr>
		<tr height="25px">
			<td>1</td>
			<td>
				window.close()
			</td>
			<td width="20px"  align="center">
				IE7
			</td>
			<td align="center" >
				firefox,chrome,<br />safari
			</td>
			<td align="center" >
				Opera
			</td>
			<td width="80px" align="center">
				<a href="javascript:window.close()">Close</a>
			</td>
		</tr>
		<tr height="25px">
			<td>2</td>
			<td>
				window.opener=null;<br />window.open('','_self');<br />window.close();
			</td>
			<td width="20px"  align="center">
				&nbsp;
			</td>
			<td align="center" >
				firefox
			</td>
			<td align="center" >
				IE7,Opera,<br />chrome,safari
			</td>
			<td width="80px" align="center">
				<a href="javascript:window.opener=null;window.open('','_self');window.close();">Close</a>
			</td>
		</tr>
		<tr height="25px">
			<td>3</td>
			<td >
				window.open('','_self');<br />window.close();
			</td>
			<td width="20px"  align="center">
				&nbsp;
			</td>
			<td align="center" >
				firefox
			</td>
			<td align="center" >
				IE7,Opera,<br />chrome,safari
			</td>
			<td width="80px" align="center">
				<a href="javascript:window.open('','_self');window.close();">Close</a>
			</td>
		</tr>
		<tr height="25px">
			<td>4</td>
			<td>
				window.opener=null;<br />window.close();
			</td>
			<td width="20px"  align="center">
				IE7
			</td>
			<td align="center" >
				firefox,safari
			</td>
			<td align="center" >
				chrome,Opera
			</td>
			<td width="80px" align="center">
				<a href="javascript:window.opener=null;window.close();">Close</a>
			</td>
		</tr>

		<tr height="25px">
			<td>5</td>
			<td>
				var opened=window.open('about:blank','_self');<br />opened.opener=null;<br />opened.close();
			</td>
			<td width="20px"  align="center">
				
			</td>
			<td align="center" >
				firefox
			</td>
			<td align="center" >
				safari,IE7,<br />chrome,Opera
			</td>
			<td width="80px" align="center">
				<a href="javascript:var opened=window.open('about:blank','_self');<br />opened.opener=null;<br />opened.close();">Close</a>
			</td>
		</tr>

		<tr height="25px">
			<td>6</td>
			<td>
				var opened=window.open('about:blank','_self');
				<br />opened.close();
			</td>
			<td width="20px"  align="center">
				
			</td>
			<td align="center" >
				safari,firefox
			</td>
			<td align="center" >
				firefox,IE7,<br />chrome,Opera
			</td>
			<td width="80px" align="center">
				<a href="javascript:var opened=window.open('about:blank','_self');opened.close();">Close</a>
			</td>
		</tr>
	</table>
	
 </BODY>
</HTML>
?

?

?

?

四,结论

?

1,firefox如果未开启允许window.close关闭窗口,window.close无任何效果,即使使用window.open切换窗口,获得控制权,firefox仍然不允许你关闭窗口

?

2,从(三)中的结论得知,(三)2、(三)3、(三)5 代码兼容性更好一些,除了firefox外,均可无提示关闭

?

3,比较(三)2、(三)3、(三)5 ,其中(三)2、(三)3 对于frefox无任何反应,而(三)5会打开一个about:blank的空白页,给用户的感觉是:用户的操作有了回应,虽然并不完美,但原窗口没有了!

?

?

4,opera对于javascript关闭窗口,基本没有安全限制,在chrome,IE,firefox认为危险的操作,opera不会做任何提示!

?

?

?

-----------------------------------------------------

?

?

?

?

?

如果您发现更好的方法,留言或者联系我:QQ 527067272,或者email: zhangxuehuaemail # gmail dot com

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

1 楼 somefuture 2010-07-01  
第四个IE也直接关了啊
2 楼 somefuture 2010-07-01  
第六个也要确认的
3 楼 sunflowers 2010-07-01  
somefuture 写道
第六个也要确认的


本文【二】中已标注了测试的浏览器,笔者未在其他版本测试
4 楼 sunflowers 2010-07-01  
somefuture 写道
第六个也要确认的


你在那个浏览器什么版本下测试的??谢谢
5 楼 tomcatlee 2010-07-01  
window.open('','_parent','');
window.close();
6 楼 xiaojing3517 2010-07-01  
http://zz.ganji.com/diannao/10062919_177020.htm

你看这个网站最下面的那个关闭窗口按钮。
7 楼 sunflowers 2010-07-01  
xiaojing3517 写道
http://zz.ganji.com/diannao/10062919_177020.htm

你看这个网站最下面的那个关闭窗口按钮。


那个按钮后台代码

<input type="button" class="closebtn" value="关闭窗口" onclick="window.opener=null;window.close();">

在测试(三)2中已讨论过了,兼容性不太好
8 楼 javaDevil 2010-07-03  
你这个测试有错误
9 楼 sunflowers 2010-07-04  
javaDevil 写道
你这个测试有错误


请问错误在哪里?以方便我和他人改正,非常感谢!!
10 楼 gnomewarlock 2010-07-05  
sunflowers 写道
javaDevil 写道
你这个测试有错误


请问错误在哪里?以方便我和他人改正,非常感谢!!

最烦这种卖关子的S B 。 你说人家有错就指出来。中国做技术的就J8这德性