2012-11-14 42 views
4

我正在用richfaces在java EE中開發一個Web應用程序。 有一個鏈接,它註銷用戶。 當用戶離開頁面或關閉瀏覽器時,我應該註銷用戶,因爲我必須知道他何時離開我們的頁面。 這裏是一個片段:onbeforeUnload不返回或沒有對話框顯示

function fireEvent(obj,evt){ 

     var fireOnThis = obj; 
     if(document.createEvent) { 
      var evObj = document.createEvent('MouseEvents'); 
      evObj.initEvent(evt, true, false); 
      fireOnThis.dispatchEvent(evObj); 
     } else if(document.createEventObject) { 
      fireOnThis.fireEvent('on'+evt); 
     } 
    } 

    var popit = true; 
    window.onbeforeunload = function() { 
     if(popit == true) { 
     fireEvent(document.getElementById("logout_form:logout_link"),'click'); 
     } 
    } 

這是工作僅瀏覽器關閉,不離開導航或刷新。 我改變了fireEvent(...)返回「」。一切正常。 如果我在fireEvent(...)之後鍵入return「」,它運行良好,只是我不想顯示對話框。 我怎麼能解決這個問題?

回答

1

使用synchronous AJAX調用,然後把你的關機方法回調:

window.onbeforeunload = function() { 
    // This template uses no error checking, it's just concept code to be 
    // expanded on. 

    // Create a new XMLHttpRequest object 
    var AJAX=new XMLHttpRequest(); 

    // Handle ready state changes (ignore them until readyState = 4) 
    AJAX.onreadystatechange= function() { if (AJAX.readyState!=4) return false; } 

    // we're passing false so this is a synchronous request. 
    // The script will stall until the document has been loaded. 
    // the open statement depends on a global variable titled _userID. 
    AJAX.open("GET", 'about:blank', false); 
    AJAX.send(null); 
}