2014-01-30 27 views
0

我想殺死一個用戶會話,如果他們退出某個頁面。KIll用戶會話on window.onunload

問題顯然是window.onunload在鉻或其他東西不起作用。是否有解決此問題的方法,只有在用戶退回時纔可以終止會話?現在,如果用戶退出,它會給他們一個提示,讓他們選擇留在頁面上或離開。


客戶端:

<a4j:jsFunction 
    name="killUserSession" 
    action="#{sessionController.invalidateSession()}"/> 

...........

var warning = true; 
window.onbeforeunload = function() { 
    if (warning) { 
    return "You have not filled out the required information below."; 
    } 
} 

window.onunload = function(){ 
    killUserSession(); 
} 

function setOnloadNull(){ 
    console.log("Setting onload to null"); 
    var warning = false; 
    window.onbeforeunload = null; 
} 
+0

雖然MDN說,這一事件是與Chrome的兼容 - 你聲明,否則 - 你可以和應該處理通過window.addEventListener()這個事件和卸載事件。 – user1428716

+0

@ user1428716我試過window.addEventListener(「onunload」,killUserSession,false);不幸的是我得到了同樣的結果,會議並沒有死亡。 – Fabii

回答

1

我檢查你的問題,我發現(在Chrome瀏覽器)setOnLoadNull是原因的問題。

Demo fails.

但當我禁用該方法,那麼onunload作品就像一個魅力。

Demo works.

+0

我需要setOnLoadNull,這樣當用戶提交表單時,他們不會得到「離開頁面提示」。僅在提交表單時調用setOnLoadNull。 – Fabii

+0

在這種情況下,請不要定義window.onbeforeunload方法。 像這樣:http://jsfiddle.net/3qKCZ/4/ – guli

+0

如果這樣做,那麼當用戶退出頁面並且用戶會話仍未被終止時,不再顯示提示。 – Fabii