1. 程式人生 > >JS無提示關閉瀏覽器視窗指令碼以及不同瀏覽器對window.close()不同表現

JS無提示關閉瀏覽器視窗指令碼以及不同瀏覽器對window.close()不同表現

[javascript] view plain copy

    無提示關閉瀏覽器視窗JS指令碼程式碼如下:  

[javascript] view plain copy

    function closewin(){   
              var browserName=navigator.appName;   
              if (browserName=="Netscape") {   
                  var opened=window.open('about:blank','_self');  
                  opened.opener=null;  
                  opened.close();  
              } else if(browserName=="Microsoft Internet Explorer") {   
                  window.opener=null;  
                  window.open('','_self');   
                  window.close();   
              }  
          }  


目前對firefox、IE9、google chrome三個瀏覽器進行了測試。

參考網上文章:window.close(); 關閉瀏覽器視窗js程式碼的分析總結
序號 	關閉程式碼 	需要確認 	無任何作用 	無需確認 	 
1 	window.close() 	IE7 	firefox,chrome,
safari 	Opera 	 
2 	window.opener=null;
window.open('','_self');
window.close(); 	  	firefox 	IE7,Opera,
chrome,safari 	 
3 	window.open('','_self');
window.close(); 	  	firefox 	IE7,Opera,
chrome,safari 	 
4 	window.opener=null;
window.close(); 	IE7 	firefox,safari 	chrome,Opera 	 
5 	var opened=window.open('about:blank','_self');
opened.opener=null;
opened.close(); 	  	firefox 	safari,IE7,
chrome,Opera 	 
6 	var opened=window.open('about:blank','_self');
opened.close(); 	  	safari,firefox 	firefox,IE7,
chrome,Opera 	 
用多種方式開啟一個頁面,然後用 window.close() 關閉它,在各瀏覽器下表現有所不同。如在位址列中直接輸入URL 時,Firefox Chrome Safari 下呼叫 window.close() 關閉頁面無效。再如 Ctrl + 點選連結開啟的視窗,Firefox 下無法通過呼叫 window.close() 來關閉。

其差異如下表格:
	位址列輸入URL 	點選連結 	Ctrl鍵+點選連結 	window.open 	window.showModalDialog
IE6 	提示視窗關閉 	直接關閉 	直接關閉 	直接關閉 	直接關閉
IE7/8 	直接關閉 	提示視窗關閉 	提示視窗關閉 	直接關閉 	直接關閉
Firefox 	不關閉,無提示 	直接關閉 	不關閉,無提示 	直接關閉 	直接關閉
Safari 	不關閉,無提示 	直接關閉 	直接關閉 	直接關閉 	直接關閉
Chrome 	不關閉,無提示 	直接關閉 	直接關閉 	直接關閉 	直接關閉
Opera 	直接關閉 	直接關閉 	直接關閉 	直接關閉 	不支援

firefox下無法關閉可能原因:

不是JS程式碼window.close()的問題,而是Firefox的配置問題,解決方法如下:
在Firefox位址列裡輸入 about:config
在配置列表中找到 dom.allow_scripts_to_close_windows
點右鍵的選切換把上面的false修改為true即可。
注:預設是false,是為了防止指令碼亂關視窗

另附程式碼:
window.opener = null;//為了不出現提示框
window.close();//關閉視窗