簡體   English   中英

window.confirm在FireFox中不起作用

[英]window.confirm not working in FireFox

背景:目的是防止用戶使用退格鍵返回頁面。 我創建了禁用該鍵的代碼,除了一些輸入字段。 但實際上,如果他們確實想回去,我想在確認對話框中詢問他們是否真的想回去。

問題:以下代碼在IE和Chrome中有效,但不適用於FF。 確認彈出,但仍會“返回”頁面。 IE / Chrome中不會發生這種情況,因為確認對話框會等待用戶輸入。

碼:

<script type="text/javascript">

    $(document).unbind('keydown').bind('keydown', function (event) {
        var doPrevent = false;
        if (event.keyCode === 8) {
            var d = event.srcElement || event.target;
            if ((d.tagName.toUpperCase() === 'INPUT' && 
                 (
                     d.type.toUpperCase() === 'TEXT' ||
                     d.type.toUpperCase() === 'PASSWORD' || 
                     d.type.toUpperCase() === 'FILE' || 
                     d.type.toUpperCase() === 'SEARCH' || 
                     d.type.toUpperCase() === 'EMAIL' || 
                     d.type.toUpperCase() === 'NUMBER' || 
                     d.type.toUpperCase() === 'DATE' )
                 ) || 
                 d.tagName.toUpperCase() === 'TEXTAREA') {


  doPrevent = d.readOnly || d.disabled;
        }
        else {
            var r = window.confirm("Leaving the page can cause data to be lost.  Are you sure?");
            if (!r) {
                doPrevent = true;
            }  
        }
    }

    if (doPrevent) {
        event.preventDefault();
        //event.stopPropagation(); 
    }
});

</script>

此問題已修復,並可以在每個瀏覽器(Safari也是如此)中使用:

   window.addEventListener("beforeunload", function (e) {

    var confirmationMessage = "Leaving the page can cause data to be lost.  Are you sure?";

    e.returnValue = confirmationMessage;     // Gecko and Trident
    return confirmationMessage;              // Gecko and WebKit

});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM