假装禁止浏览器backspace键,真实效果就是你如果不点击body区域,你按backspace还是禁止不了
2017-07-19 00:00
302 查看
摘要: 这玩意在火狐跟ie没啥卵用,只要点击浏览器以外地方,backspace还是禁止不了
//添加监听事件做到兼容所有浏览器
var EventUtil = {
getEvent: function(e){
return e ? e :window.event;
},
addHandler:function(element, type, handler){
if(element.addEventListener){
element.addEventListener(type, handler, false)
} else if (element.attachEvent){
element.attachEvent("on"+type, handler)
} else {
element["on" + type] = handler;
}
},
removeHander:function(element, type, handler){
if(removeEventListener){
element.removeEventListener(type, handler, false);
} else if (element.detachEvent){
element.detachEvent("on"+type, handler)
} else {
element["on" + type] = null;
}
},
trim:function(str) {
return str.replace(/(^\s+)|(\s+$)/g, "");
},
keyCode:function(e){
return event.keyCode ? event.keyCode : (event.which ? event.which : event.charCode);
},
handler: function(event){
event = event || window.event;
var keyCode = event.keyCode ? event.keyCode : (event.which ? event.which : event.charCode);
if (keyCode == 13) {
EventUtil.submit();
}
},
getWheelDelta: function (event) {
e = EventUtil.getEvent(event);
if(e.shiftKey){
e.preventDefault ? e.preventDefault(): e.returnValue= false;
}
if(e.ctrlKey){
e.preventDefault ? e.preventDefault(): e.returnValue= false;
}
},
handleMouseWheel:function(event) {
event = EventUtil.getEvent(event);
var delta = EventUtil.getWheelDelta(event);
},
forbidBackspace:function(e){
event = EventUtil.getEvent(e);
keyCode = EventUtil.keyCode(event);
var obj = event.relatedTarget || event.srcElement || event.target || event.currentTarget;
if(keyCode == 8){
var tagName = obj.nodeName //标签名称
//如果标签不是input或者textarea则阻止Backspace
if(tagName!='INPUT' && tagName!='TEXTAREA'){
return EventUtil.stopIE(event);
}
var tagType = obj.type.toUpperCase();//标签类型
//input标签除了下面几种类型,全部阻止Backspace
if(tagName=='INPUT' && (tagType!='TEXT' && tagType!='TEXTAREA' && tagType!='PASSWORD')){
return EventUtil.stopIE(event);
}
//input或者textarea输入框如果不可编辑则阻止Backspace
if((tagName=='INPUT' || tagName=='TEXTAREA') && (obj.readOnly==true || obj.disabled ==true)){
return EventUtil.stopIE(event);
}
}
},
stopIE:function(e){
event = EventUtil.getEvent(e);
if(event.preventDefault ){
//preventDefault()方法阻止元素发生默认的行为
event.preventDefault();
}
if(event.returnValue){
//IE浏览器下用window.event.returnValue = false;实现阻止元素发生默认的行为
event.returnValue = false;
}
return false;
}
}
EventUtil.addHandler(document, "mousewheel", EventUtil.handleMouseWheel);
EventUtil.addHandler(document, "DOMMouseScroll", EventUtil.handleMouseWheel);
EventUtil.addHandler(document,'keydown', EventUtil.forbidBackspace);
EventUtil.addHandler(document,'keypress', EventUtil.forbidBackspace);
//添加监听事件做到兼容所有浏览器
var EventUtil = {
getEvent: function(e){
return e ? e :window.event;
},
addHandler:function(element, type, handler){
if(element.addEventListener){
element.addEventListener(type, handler, false)
} else if (element.attachEvent){
element.attachEvent("on"+type, handler)
} else {
element["on" + type] = handler;
}
},
removeHander:function(element, type, handler){
if(removeEventListener){
element.removeEventListener(type, handler, false);
} else if (element.detachEvent){
element.detachEvent("on"+type, handler)
} else {
element["on" + type] = null;
}
},
trim:function(str) {
return str.replace(/(^\s+)|(\s+$)/g, "");
},
keyCode:function(e){
return event.keyCode ? event.keyCode : (event.which ? event.which : event.charCode);
},
handler: function(event){
event = event || window.event;
var keyCode = event.keyCode ? event.keyCode : (event.which ? event.which : event.charCode);
if (keyCode == 13) {
EventUtil.submit();
}
},
getWheelDelta: function (event) {
e = EventUtil.getEvent(event);
if(e.shiftKey){
e.preventDefault ? e.preventDefault(): e.returnValue= false;
}
if(e.ctrlKey){
e.preventDefault ? e.preventDefault(): e.returnValue= false;
}
},
handleMouseWheel:function(event) {
event = EventUtil.getEvent(event);
var delta = EventUtil.getWheelDelta(event);
},
forbidBackspace:function(e){
event = EventUtil.getEvent(e);
keyCode = EventUtil.keyCode(event);
var obj = event.relatedTarget || event.srcElement || event.target || event.currentTarget;
if(keyCode == 8){
var tagName = obj.nodeName //标签名称
//如果标签不是input或者textarea则阻止Backspace
if(tagName!='INPUT' && tagName!='TEXTAREA'){
return EventUtil.stopIE(event);
}
var tagType = obj.type.toUpperCase();//标签类型
//input标签除了下面几种类型,全部阻止Backspace
if(tagName=='INPUT' && (tagType!='TEXT' && tagType!='TEXTAREA' && tagType!='PASSWORD')){
return EventUtil.stopIE(event);
}
//input或者textarea输入框如果不可编辑则阻止Backspace
if((tagName=='INPUT' || tagName=='TEXTAREA') && (obj.readOnly==true || obj.disabled ==true)){
return EventUtil.stopIE(event);
}
}
},
stopIE:function(e){
event = EventUtil.getEvent(e);
if(event.preventDefault ){
//preventDefault()方法阻止元素发生默认的行为
event.preventDefault();
}
if(event.returnValue){
//IE浏览器下用window.event.returnValue = false;实现阻止元素发生默认的行为
event.returnValue = false;
}
return false;
}
}
EventUtil.addHandler(document, "mousewheel", EventUtil.handleMouseWheel);
EventUtil.addHandler(document, "DOMMouseScroll", EventUtil.handleMouseWheel);
EventUtil.addHandler(document,'keydown', EventUtil.forbidBackspace);
EventUtil.addHandler(document,'keypress', EventUtil.forbidBackspace);
相关文章推荐
- 点击显示隐藏菜单,动画效果,半透明,支持所有浏览器
- 关于listview的item中如果有textview,listview点击item没有效果的解决办法
- 点击导航下的某个栏目,出现在相应区域;滚动到某个区域,导航下的某个栏目相应效果
- Android GridView去除自带边框点击效果、去除右侧滚动条、禁止上下滑动
- 解决禁止浏览器回弹效果后页面其它元素滚动事件失效
- js 禁止浏览器默认的图片拖动效果
- 图片自适应浏览器窗口宽度——就是响应式图片等比缩放效果
- 浏览器禁止跨域浏览,如果非要程序修改跨域访问数据资源,可采用下面办法
- ExtJS4.2 Grid知识点七:显示行号、斑马线效果(奇偶行背景色不一致)、复制单元格文字、禁止点击列排序
- android textview 点击打开facebook个人专页,如果没有则跳到浏览器显示
- 判断当前的浏览器是pc还是移动设备,如果是手机,就跳转到对应手机端网站
- asp.net 点击浏览器后退按钮如果让页面刷新
- 用html5 js实现点击一个按钮达到浏览器全屏效果
- 1.如果现在不努力积累知识,下面文章所述就是我以后真实生活的写照
- 禁止浏览器在单击backspace键(退格键)时跳转页面(extjs,javascript)
- 移动端浏览器和微信浏览器上禁止body的滚动条
- 关于百度信息流“霸屏”代码(着落页点击浏览器“回退”按钮还是在官网)的实现。
- 修改了myeclipse中的代码,在浏览器中还是以前的效果
- 用Html5 or JS实现点击一个按钮达到浏览器全屏效果
- HTML网页中插入输入框,输入框内容或代码可点击"运行代码"运行,在浏览器看到运行输入框内代码效果。此HTML代码由表单代码textarea和简单JS代码实现。 HTML代码: <textarea n