2016-09-21 2 views
1

사용자가 지정한 시간에 답변 할 수있는 테스트 페이지가 있습니다.조건이 true가되면 onbeforeunload를 비활성화하는 방법은 무엇입니까?

시간 제한 때문에 자바 스크립트 카운트 다운 타이머를 사용했습니다. 시간이 끝날 때까지 사용자는 창을 닫을 수 없어야합니다. 이를 위해

은이 같은 창 폐쇄 방지 onbeforeunload 윈도우 이벤트를 사용했을 때 다른 손

<script language="JavaScript"> 
    window.onbeforeunload = confirmExit; 
    function confirmExit() { 
     return "You have attempted to leave this page. Are you sure?"; 
    } 
</script> 

, 카운트 다운하여, I는 시간이 끝난 후 페이지를 발생하는 사용자 리디렉션 timeUp 기능을 설정.

이 경우 onbeforeunload 이상의 실행 때문에 리디렉션에 실패하고 위의 메시지가 사용자에게 표시됩니다.

조건이 참일 때 onbeforeunload 이벤트를 사용하지 못하도록 할 수 있습니까? beforeunload 이벤트 핸들러를 사용하여

답변

1

하려고 시도 - 브라우저가 메시지를 표시하지 않습니다.

타이머 기능을 사용하여 사용자에게 메시지를 표시할지 여부를 확인했다고 했으므로 위의 코드에서

var displayMessage = true; 
setTimeout(function() { 
    displayMessage = false; 
}, 10000); 

function confirmExit() { 
    if (displayMessage) { 
     return "You have attempted to leave this page. Are you sure?"; 
    } 
} 
window.onbeforeunload = confirmExit; 

- 10 초 후에 displayMessage의 값은 false, 그리고하는 사용자가 10 초 후에 종료를 /는 메시지가 표시되지 않습니다 브라우저 페이지를 다시 시도됩니다.

1

전화 때어 :

$(window).unbind('beforeunload'); 

또는 onbeforeunload 기능이 아무것도 반환하지 않을 경우

window.onbeforeunload = null;` 
관련 문제