2016-09-21 19 views
1

我有一個測試頁,用戶可以在指定的時間內回答它。如何在條件成立時禁用onbeforeunload?

對於時間限制,我使用了一個javascript倒數計時器。直到時間未完成,用戶必須無法關閉窗口。

對於我用onbeforeunload窗口事件要防止窗口關閉這樣的:

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

在另一方面,在倒數計時器,我設置一個timeUp函數重定向用戶完成時間後導致頁面。

在這種情況下,因爲在onbeforeunload以上發射,重定向失敗,並且上面的消息顯示給用戶。

有什麼辦法當條件成立時,可以禁用onbeforeunload事件?

回答

1

如果onbeforeunload函數不會返回任何東西 - 瀏覽器不會顯示任何消息。

既然你說過你使用了定時器功能來檢查你是否應該顯示用戶的消息。

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的值將是假的,並且如果用戶將嘗試在10秒後刷新/退出頁面瀏覽器將不顯示該消息。

1

呼叫解除綁定使用beforeunload事件處理程序:

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

或者試試

window.onbeforeunload = null;` 
相關問題