2012-10-18 319 views
-1

當我關閉瀏覽器時,我必須執行一些服務器端功能。關閉瀏覽器警報

如果在執行服務器端功能時發生任何異常,我必須顯示警告消息「Operation Unsuccessful」,在這種情況下瀏覽器不應關閉。

+1

本網站不只是爲您提供代碼;你需要首先嚐試一些東西,以便我們可以告訴你你做錯了什麼。 –

+0

我相信你不能阻止瀏覽器窗口關閉。 – Uooo

+1

嘿檢查此堆棧溢出問題http://stackoverflow.com/questions/10860642/how-to-show-alert-to-user-if-the-user-is-closing-the-browser?lq=1還試試這個http://www.dotnetobject.com/Thread-Close-the-browser-tab-after-alert-message-click-using-javascript – riti

回答

0

也許你可以使用此代碼

<html> 
<head> 
<script type="text/javascript"> 
    var hook = true; 
    window.onbeforeunload = function() { 
    if (hook) { 
     return "Did you save your stuff?" 
    } 
    } 
    function unhook() { 
    hook=false; 
    } 
</script> 
</head> 
<body> 

<a href="http://google.com">external link</a> 


</body> 
</html> 
+0

你在哪裏打電話服務器端功能 – F11

+0

服務器端功能?哪裏?在這裏,我剛剛使用了關鍵字window.onbrforeunload。它的DOM。 ANd它的工作 – polin

+0

@Devesh檢查我編輯的答案關於如何調用服務器端 –

1

其實,你可以不防止用戶關閉窗口。 但是,您可以通過留言提醒他/她,要求用戶留下或離開頁面,通過綁定onbeforeunload事件完成此操作。

var showAlert = false; 
window.onbeforeunload = function(){ 
    $.ajax({ 
     url: "serversideprcess.aspx", 
     async : false 
     }).done(function (data) { 
     if(data !="success") 
      showAlert = true; 
     }).fail(function(){ 
    showAlert = true; 
    }); 

    if(showAlert){ 
     return "Operation unsuccessful"; 
    } 
} 

Ajax請求必須是同步的:async : false

+0

我的答案假設'serversideprcess.aspx'將返回'success'字符串,當操作成功,否則操作不成功。 –

+0

,我有一個方法TEST在serversideprcess.aspx中,這個方法將返回true或false.Now如何在上面實現它,並基於返回類型,我必須決定是否顯示alert或不? – F11

1

你不能。

您無法阻止瀏覽器窗口關閉。永遠。您也不能在onbeforeunload處理程序中執行任何需要時間(如HTTP請求)的工作 - 您只能顯示一個確認對話框。

0
window.onbeforeunload = WindowCloseHanlder; 
function WindowCloseHanlder() { 
    //Call ajax server code CallIntiateAjaxCalling(); 
    if (conditionfails) { 
     alert("condition fails") 
      return false; 
    } 
}