2014-01-30 2 views
0

사용자 세션이 특정 페이지를 벗어나면 죽이기를 원합니다.KIll 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이 이벤트는 크롬과 호환됩니다 말한다 있지만 - 당신이 다른 상태 - 당신이 할 수있는 및 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