2014-01-30 4 views
0

Я хочу убить сеанс пользователей, если они возвращаются из определенной страницы.KIll user session 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

проверить вашу проблему и я нашел (под хром) setOnLoadNull является причиной проблемы.

Demo fails.

Но когда я отключить этот метод, то onunload работает как шарм.

Demo works.

+0

Мне нужен setOnLoadNull, так что, когда пользователь отправляет форму, они не получают «приглашение на страницу». setOnLoadNull вызывается только при отправке формы. – Fabii

+0

В этом случае не определяйте метод window.onbeforeunload. Нравится это: http://jsfiddle.net/3qKCZ/4/ – guli

+0

Если это так, то приглашение больше не отображается, когда пользователь возвращается на страницу, а сеанс пользователя все еще не убит. – Fabii