原因
IE浏览器启用了返回上一个页面的快捷键: backspace
chrome等主流浏览器屏蔽了backspace的默认事件,IE浏览器需要特殊处理
解决
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则阻止Backspaceif (tagName != 'INPUT' && tagName != 'TEXTAREA') {return stopIt(ev);}var tagType = obj.type.toUpperCase();//标签类型//input标签除了下面几种类型,全部阻止Backspaceif (tagName == 'INPUT' && (tagType != 'TEXT' && tagType != 'TEXTAREA' && tagType != 'PASSWORD')) {return stopIt(ev);}//input或者textarea输入框如果不可编辑则阻止Backspaceif ((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;}// 阻止冒泡泡if (ev.stopPropagation) {ev.stopPropagation()} else {ev.cancelBubble = true}return false;}$(function() {//实现对字符码的截获,keypress中屏蔽了这些功能按键document.onkeypress = banBackSpace;//对功能按键的获取document.onkeydown = banBackSpace;})
在此说明几点:
1、 IE:有window.event对象
Firefox:没有window.event对象。可以通过给函数的参数传递event对象。如οnmοusemοve=doMouseMove(event)
统一的解决方法:var event = event || window.event;
2、 IE:even对象有srcElement属性,但是没有target属性
Firefox:even对象有target属性,但是没有srcElement属性
解决方法:var obj = event.relatedTarget || event.srcElement || event.target || event.currentTarget;
阻止默认事件 (两种方法)
- event.preventDefault();
- return false;
return false:相当于 event.preventDefault() + event.cancelBubble = false + event.stopPropagation() 的集合;
原文链接:https://blog.csdn.net/csdn_ds/article/details/73337929
参考链接: https://www.cnblogs.com/lujiulong/p/6019638.html
修复input输入框回车刷新页面问题
- form表单 onsubmit=”return false;”
