转自:http://7626.net/?p=270

浏览器有个很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

 

posted on 2013-01-23 17:30  Rain&Sun  阅读(897)  评论(0编辑  收藏  举报