前端javascript如何阻止按下退格鍵頁面回退 但 不阻止文本框使用退格鍵刪除文本


這段代碼可以:

document.onkeydown = function (e) {
    e.stopPropagation();    // 阻止事件冒泡傳遞
    e.preventDefault();    // 阻止瀏覽器默認事件的發生
    // your code
    if (e.keyCode == 8) {        // keyCode == 8 表示按下的回退按鈕
         
    }
}

 

下面更正一下,上面的寫法有一個比較嚴重的問題:

這種寫法雖然屏蔽了回車鍵頁面回退的功能,但同樣,如果該頁面有文本輸入框,那么這個輸入框將不能使用 退格鍵 進行文本刪除;

下面給出一種網上搜索的 既能屏蔽頁面退格鍵回退 ,又不屏蔽 退格鍵刪除 功能的代碼,感謝網上盆友的分享,因為有好幾個博客都能找到同一段代碼,所以無法確定誰是原創:

<script type="text/javascript">
        //處理鍵盤事件 禁止后退鍵(Backspace)密碼或單行、多行文本框除外
        function forbidBackSpace(e) {
            var ev = e || window.event; //獲取event對象 
            var obj = ev.target || ev.srcElement; //獲取事件源 
            var t = obj.type || obj.getAttribute('type'); //獲取事件源類型 
            //獲取作為判斷條件的事件類型 
            var vReadOnly = obj.readOnly;
            var vDisabled = obj.disabled;
            //處理undefined值情況 
            vReadOnly = (vReadOnly == undefined) ? false : vReadOnly;
            vDisabled = (vDisabled == undefined) ? true : vDisabled;
            //當敲Backspace鍵時,事件源類型為密碼或單行、多行文本的, 
            //並且readOnly屬性為true或disabled屬性為true的,則退格鍵失效 
            var flag1 = ev.keyCode == 8 && (t == "password" || t == "text" || t == "textarea") && (vReadOnly == true || vDisabled == true);
            //當敲Backspace鍵時,事件源類型非密碼或單行、多行文本的,則退格鍵失效 
            var flag2 = ev.keyCode == 8 && !(t == "password" && t == "text" && t == "textarea");
            //判斷 
            if (flag2 || flag1) return false;
        }
        //禁止后退鍵 作用於Firefox、Opera
        document.onkeypress = forbidBackSpace;
        //禁止后退鍵  作用於IE、Chrome
        document.onkeydown = forbidBackSpace;
</script>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM