js禁止Backspace键使浏览器后退的实现方法
在项目中遇到按下Backspace键让浏览器后退的问题,上网搜了几种解决方案都不太理想。于是集众人之智,采众家之长,归纳如下:
1、在公用js中定义阻止Backspace的方法
functionbanBackSpace(e){
varev=e||window.event;
//各种浏览器下获取事件对象
varobj=ev.relatedTarget||ev.srcElement||ev.target||ev.currentTarget;
//按下Backspace键
if(ev.keyCode==8){
vartagName=obj.nodeName//标签名称
//如果标签不是input或者textarea则阻止Backspace
if(tagName!='INPUT'&&tagName!='TEXTAREA'){
returnstopIt(ev);
}
vartagType=obj.type.toUpperCase();//标签类型
//input标签除了下面几种类型,全部阻止Backspace
if(tagName=='INPUT'&&(tagType!='TEXT'&&tagType!='TEXTAREA'&&tagType!='PASSWORD')){
returnstopIt(ev);
}
//input或者textarea输入框如果不可编辑则阻止Backspace
if((tagName=='INPUT'||tagName=='TEXTAREA')&&(obj.readOnly==true||obj.disabled==true)){
returnstopIt(ev);
}
}
}
functionstopIt(ev){
if(ev.preventDefault){
//preventDefault()方法阻止元素发生默认的行为
ev.preventDefault();
}
if(ev.returnValue){
//IE浏览器下用window.event.returnValue=false;实现阻止元素发生默认的行为
ev.returnValue=false;
}
returnfalse;
}
方法注释写的很清晰了,这里不过多解释。
2、页面加载完成就调用该方法
$(function(){
//实现对字符码的截获,keypress中屏蔽了这些功能按键
document.onkeypress=banBackSpace;
//对功能按键的获取
document.onkeydown=banBackSpace;
})
注: 按键事件触发顺序:keydown->keypress->textInput->keyup
存在问题:select下拉列表展开后,无法获取键盘事件,此时按Backspace键,浏览器还是会回退到历史;解决办法:将select下拉框改为easyUI的combobox;
以上这篇js禁止Backspace键使浏览器后退的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。