js禁用回退键[backspace键]浏览历史跳转的解决办法
js禁用回退键[backspace键]浏览历史跳转的解决办法 在页面非输入框中按下回退键[backspace键]时页面会跳转到上一页,但是上一页加载失败,说会话已过期,
问题描述到此结束.
解决办法:
下面是在网上找的代码:
Javascript代码
, window.onload=function(){
, document.getElementsByTagName("body")[0].onkeydown =function(){
, if(event.keyCode==8){
, var elem = event.srcElement;
, var name = elem.nodeName;
,
, if(name!='INPUT' && name!='TEXTAREA'){
, event.returnValue = false ;
? return ;
,, }
,, var type_e = elem.type.toUpperCase();
,, if(name=='INPUT' && (type_e!='TEXT' && type_e!='TEXTAREA' &&
type_e!='PASSWORD' && type_e!='FILE')){
,, event.returnValue = false ;
,, return ;
,, }
,, if(name=='INPUT' && (elem.readOnly==true || elem.disabled
==true)){
,, event.returnValue = false ;
,, return ;
,? }
,, }
,, }
,, }
问题解决了,
使用说明:
1.把代码直接复制到页面,【页面必须含有body标签】
2.放到任意一个页面引用的js文件中【直接放到文件的最开始,或最后,不要放到方法里面,页面必须含有body标签】
以上为1.0版本,只支持IE:
-------------------------------------------------------分割线------------------------------------------------------
以下为2.0版本,支持IE,firefox,chrome[这三款浏览器经过测试]等浏览器(又修复了个不大不小的bug,现在是2.1)
Js代码
,, window.onload=function(){
,,
,, document.getElementsByTagName("body")[0].onkeydown =function(){
,,
,, //获取事件对象
,, var elem = event.relatedTarget || event.srcElement || event.target
||event.currentTarget;
,?
,, 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;
,, }
----------------------------------------------------------------------------------------------------------------------
版本升级:
当前版本 2.1
修复firefox下无法删除input里面字符的bug
说明:
不知道为毛,在firefox下出现问题了,之前确定测试过,然后有一个童鞋说这个脚本在firefox
下不能用,会出现上面所说现象,我说我调试下,但是后来他说又可以了,
不过经过我的测试这段脚本确实有问题,
确实会出现上述问题,不过是时有时无。
算了还是改一下吧,
出现问题的原因:
firefox下 var elem = event.relatedTarget || event.srcElement 无法获取到目标对象。
所以换成target属性来获取。