2012-08-10 68 views
1

當用戶關閉瀏覽器時,我想確認「您是否要註銷?」。 如果是,我想運行一些註銷代碼並顯示「您已註銷」消息。 如果不是,就什麼都不做。瀏覽器關閉事件確認。點擊確定後運行一些代碼,自定義代碼

以下是我正在使用的代碼。

window.onbeforeunload = closeit; 

function closeit(e) { 
    var closeEvent = false; 
    if (event.clientY < 0) 
     closeEvent = true; 

    if ((closeEvent)) { 


     var response = confirm("Are you sure you want to log-off?"); 

     if(response == true){ 
      var swf = "SWFAPP"; 
      var container; 
      if (navigator.appName.indexOf("Microsoft") >= 0) 
      { 
       container = document; 
      } 
      else 
      { 
       container = window; 
      } 
      container[swf].logOutUser(); 
      alert("Logged off"); 
     } 
     else{ 

     } 

    } 
} 

上面的代碼不工作,它關閉瀏覽器,無論我單擊確定或取消。如果點擊OK,則不拋出警告消息「已註銷」。

如果我刪除確認行並說響應始終爲真,它將運行註銷碼並顯示消息「已註銷」。 Container.logOutUser更新數據庫中的用戶狀態。

+0

你可以嘗試'如果(確認(「你...」))的',而不是創建中間變量。 'confirm()'返回true或false,但是我總是對使用哪個'=='或'='感到困惑,所以如果IF(true)起作用,IF(confirm())應該可以工作。 – StuckAtWork 2012-08-10 15:38:33

回答

0

onbeforeunload事件沒有clientY屬性,所以closeEvent將永遠是false

事件的returnValue屬性必須設置爲防止頁面卸載,但瀏覽器通過提示用戶保留最終決定。另請參見:https://developer.mozilla.org/en-US/docs/DOM/window.onbeforeunload

window.onbeforeunload = closeit; 

function closeit(e) { 
    if (confirm("Are you sure you want to log-off?")) { 
     var container; 
     if (navigator.appName.indexOf("Microsoft") >= 0) 
     { 
      container = document; 
     } 
     else 
     { 
      container = window; 
     } 
     container[swf].logOutUser(); 
     alert("Logged off"); 
    } 
    else{ 
     e.returnValue='Log-off cancelled.'; 
    } 
} 
+0

上面的代碼片段工作。它關閉瀏覽器是和否。 – user418836 2012-08-10 19:15:45

+0

你使用什麼瀏覽器?該代碼在Firefox v14中以空HTML格式進行測試,並且沒有第三方腳本。 – Jay 2012-08-11 07:39:36

0
window.onbeforeunload = function (evt) { 
evt = window.event; 
alert(evt.clientY); 
相關問題