這次帶給大家js禁止瀏覽器後退事件,js禁止瀏覽器後退事件的注意事項有哪些,下面就是實戰案例,一起來看一下。
在專案中遇到按下Backspace鍵讓瀏覽器後退的問題,上網搜了幾種解決方案都不太理想。於是集眾人之智,採眾家之長,歸納如下:
# 1.在公用js中定義阻止Backspace的方法
function banBackSpace(e){ var ev = e || window.event; //各种浏览器下获取事件对象 var obj = ev.relatedTarget || ev.srcElement || ev.target ||ev.currentTarget; //按下Backspace键 if(ev.keyCode == 8){ var tagName = obj.nodeName //标签名称 //如果标签不是input或者textarea则阻止Backspace if(tagName!='INPUT' && tagName!='TEXTAREA'){ return stopIt(ev); } var tagType = obj.type.toUpperCase();//标签类型 //input标签除了下面几种类型,全部阻止Backspace if(tagName=='INPUT' && (tagType!='TEXT' && tagType!='TEXTAREA' && tagType!='PASSWORD')){ return stopIt(ev); } //input或者textarea输入框如果不可编辑则阻止Backspace if((tagName=='INPUT' || tagName=='TEXTAREA') && (obj.readOnly==true || obj.disabled ==true)){ return stopIt(ev); } } } function stopIt(ev){ if(ev.preventDefault ){ //preventDefault()方法阻止元素发生默认的行为 ev.preventDefault(); } if(ev.returnValue){ //IE浏览器下用window.event.returnValue = false;实现阻止元素发生默认的行为 ev.returnValue = false; } return false; }
# 方法註解寫的很清楚了,這裡不過度解釋。
2.頁面載入完成就呼叫該方法
$(function(){ //实现对字符码的截获,keypress中屏蔽了这些功能按键 document.onkeypress = banBackSpace; //对功能按键的获取 document.onkeydown = banBackSpace; })
註: 按鍵事件觸發順序: keydown -> keypress ->textInput -> keyup
# 存在問題:select下拉清單展開後,無法取得鍵盤事件,此時按Backspace鍵,瀏覽器還是會回退到歷史;解決方法:將select下拉方塊改為easyUI的combobox;
相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!
推薦閱讀:
以上是js禁止瀏覽器後退事件的詳細內容。更多資訊請關注PHP中文網其他相關文章!