浏览器有个很BT的默认设置,就是当光标不在输入框的时候,按BackSpace键后默认动作是后退至上一页。在各类WebApp下,这个设置是无法忍受的。
在ExtJS框架下可以这样:
//禁用Backspace鍵後退
Ext.EventManager.on(Ext.isIE ? document : window, 'keydown', function (e, t) {
if (e.getKey() == e.BACKSPACE &&e.browserEvent.srcElement.type != 'text' &&
e.browserEvent.srcElement.type != 'textarea' && e.browserEvent.srcElement.type != 'password') {
e.stopEvent();
}
});
如果是纯JS下,可以这样: window.onload=function(){ /**************************** * 作者:q821424508@sina.com * * 时间:2012-08-20 * * version:2.0 * * * ****************************/ document.getElementsByTagName("body")[0].onkeydown =function(){ //获取事件对象 var event = window.event || arguments[0]; if(event.keyCode==8){//判断按键为backSpace键 //获取按键按下时光标做指向的element var elem = event.srcElement || event.currentTarget; //判断是否需要阻止按下键盘的事件默认传递 var name = elem.nodeName; if(name!='INPUT' && name!='TEXTAREA'){ return _stopIt(event); } var type_e = elem.type.toUpperCase(); if(name=='INPUT' && (type_e!='TEXT' && type_e!='TEXTAREA' && type_e!='PASSWORD' && type_e!='FILE')){ return _stopIt(event); } if(name=='INPUT' && (elem.readOnly==true || elem.disabled ==true)){ return _stopIt(event); } } } } function _stopIt(e){ if(e.returnValue){ e.returnValue = false ; } if(e.preventDefault ){ e.preventDefault(); } return false; }
方法二来自http://q821424508.iteye.com/blog/1587025