2012年1月31日

如何不需要警告確認就關閉視窗(window.close)

如果我們利用javascript window.open打開一個視窗,在所打開的視窗的主機位置如果與打開網頁主機不同,這時下window.close()試圖關閉視窗,一般會出現是否要關閉視窗的確認畫面:


image

以下將說明如何避免這種情形:

1. a.aspx:利用window.open打開網頁

<SCRIPT LANGUAGE="javascript"> 

var isCloseSelf=1; //1表示要所開視窗自動關閉
function openWinForm()
{

var win=window.open('http://192.168.1.1/intra.aspx, 'newwindow', 'height=100, width=400,
top=0, left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no');

}


</SCRIPT>


2. b.aspx:被打開的網頁加入以下的script



 <Script language='Javascript'>

if (opener.window.isCloseSelf == 1)
{
window.opener=window.open('', '_self', ''); //讓IE誤以為已經有開過同主機的網頁
window.close();
}
</Script>


如果Firefox跑a.aspx,利用IE-View外掛,打開b.aspx則會抓不到isCloseSelf這變數,可改用vbscript來運作:



if opener.isCloseSelf=1 Then
'讓IE誤以為已經有開過同主機的網頁
set window.opener=window.open("", "_self", "")
call window.close()
end if


加上以上的程式,就不會再出現確認視窗了。



參考:



http://blog.clauskonrad.net/2010/01/how-to-close-browser-window-without.html

沒有留言:

張貼留言