2012-10-17 34 views
2

我在OnBeforeUnload上調用一個函數,並返回true/false。當我要關閉瀏覽器時,瀏覽器顯示消息「您確定要導航遠離這個頁面「,在其下面寫入」真/假「。在OnBeforeUnload上顯示函數「真/假」的返回值

代碼如下: -

<body onbeforeunload="javascript:return unlockOperationon()"> 
</body> 

和JavaScript的功能是: -

function unlockOperationon() 
{ 
    return true; 
} 
+0

當我關閉瀏覽器,我必須perofrm一些服務器端功能。 如果這些服務器端功能出現任何異常,我必須顯示一條警告消息,說明「Operation Unsuccessful」,在這種情況下,瀏覽器不應該關閉。 否則關閉瀏覽器。 – F11

回答

2

你需要返回從unlockOperationonMain法 「真/假」 字符串。 onbeforeunload的目的是向用戶詢問有意義的消息,以便使用該消息的處理程序來獲取該消息。例如,您可以從處理程序返回此字符串:「此頁面上的所有未保存的更改都將丟失。」

這裏是this comment提出的想法的實現:

<script runat="server" > 
    [System.Web.Services.WebMethod] 
    public static string GetBeforeUnloadMessage() 
    { 
      return DateTime.Now.Second < 30 ? "Please, stay with us at least for a few seconds." : null; 
    } 
</script> 
<head runat="server"> 
    <title></title> 
    <script src="Scripts/jquery-1.8.2.min.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
      function checkServerBeforeUnload() { 
       var result = null; 
       $.ajax({ 
        url: location.href + "/GetBeforeUnloadMessage", 
        type: "POST", 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        async: false, 
        success: function (response) { 
         result = response.d; 
        } 
       }); 

       if (result) { 
        return result; 
       } 
      } 
    </script> 
</head> 
<body onbeforeunload="return checkServerBeforeUnload()"> 
    <form id="form1" runat="server"> 
    <div> 
      Page rendered at: 
      <%= DateTime.Now.ToString("HH:mm:ss") %> 
      <asp:Button runat="server" Text="Click Me" /> 
    </div> 
    </form> 
</body> 
</html> 
+1

只是一個額外的說明,沒有什麼可以與您的答案相抵觸:網頁不會告訴用戶用戶不能關閉它們。他們只會通知用戶爲什麼用戶可能不想關閉它們,但如果用戶仍然想關閉網頁,它將被關閉,沒有也不應該有任何方法來阻止它。 – hvd

+0

當我關閉瀏覽器時,我必須執行一些服務器端功能。 如果這些服務器端功能出現任何異常,我必須顯示一條警告消息,說明「Operation Unsuccessful」,在這種情況下,瀏覽器不應該關閉。 否則關閉瀏覽器。 – F11

+1

@Devesh,你不能阻止用戶關閉瀏覽器。只要處理它。如果您在用戶關閉瀏覽器之前需要進行服務器端檢查,則可以對服務器執行同步異步調用,執行您需要的檢查,以及在您認爲瀏覽器不應該關閉的情況下返回消息以解釋用戶爲何必須保留在此頁面上 –