在做公司的CMS的时候出现了一些js的问题,其中有一个就是在页面非输入框中按下回退键[backspace键]时页面会跳转到上一页,但是上一页加载失败,说会话已过期,
问题描述到此结束.
解决办法:
第一直觉就是上网搜答案,但是结果不理想。
第二上论坛上看看有没有解决办法,到是找到一个类似的问你
‘在IE里按backspace键时如何知道是发生在input还是在中文输入法框?’
地址:http://www.iteye.com/problems/3272
问题类似,但是不是解决办法,还好的就是我根据他的思路自己试着找解决办法。
多谢fuwang
下面是我代码:
window.onload=function(){ /**************************** * 作者:q821424508@sina.com * * 时间:2012-07-12 * * version:1.0 * * * ****************************/ 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)
window.onload=function(){ /**************************** * 作者:q821424508@sina.com * * 时间:2012-08-20 * * version:2.1 * * * ****************************/ 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属性来获取。
ok 欢迎继续使用
有问题 请提出来 我来修复。
相关推荐
禁用backspace键的后退功能,但是可以删除文本内容
禁用backspace键的后退功能,但是可以删除文本内容
下面小编就为大家带来一篇禁用backspace网页回退功能的实现代码。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
屏蔽回退键 支持Firefox、Opera IE、Chrome
我们在真实的项目开发中经常会使用JS 对键盘上的一些按键进行禁用,常见的比如说退格键(backspace/ 后退键),我在一个项目中就遇到过在页面编辑的时候禁用掉退格键,因为退格键会发生页面后退,这样编辑的内容都会...
chrome52版本以下 屏蔽退格键 回退插件 backspacemeansbackspace V 1.2
就会跳转到上一个页面,效果就像点击了浏览器的后退按钮返回前一个页面一样,而在火狐和google下没有这样的问题出现,为了解决这个问题,写了一个如下的处理方法,如果文本框是只读的,那么就禁用Backspace键。...
当我们在jsp上有个只读文本框的时候,用户在文本框内点击BackSpace会后退网页,此js直接引用到jsp内就可以屏蔽退格键后退网页的功能,删除功能还在。经测试,谷歌,IE都可以用。
javascript禁制后退键(Backspace)实例代码.docx
就会跳转到上一个页面,效果就像点击了浏览器的后退按钮返回前一个页面一样,而在火狐和google下没有这样的问题出现,为了解决这个问题,写了一个如下的处理方法,如果文本框是只读的,那么就禁用Backspace键。...
可处理在jsp界面中,文本框为只读和disable状态时,按backspace键返回上一页的问题
在项目中遇到按下Backspace键让浏览器后退的问题,上网搜了几种解决方案都不太理想。于是集众人之智,采众家之长,归纳如下: 1、在公用js中定义阻止Backspace的方法 function banBackSpace(e){ var ev = e || ...
js禁止Backspace键使浏览器后退的实现方法.docx
上周提交了一个项目(内部使用的),一同事提出个BUG,说要禁用退格键(backspace或者叫后退键),因为这和他的习惯不一样,担心万一文字录入一半,他按了退格键,那整个页面的内容就白填了,然后信誓旦旦的说他做的...
Linux中oracle学习总结——解决backspace和上下键使用出现乱码
js屏蔽backspace后退,又不影响删除输入框文字
在web端,输入的时候,很容易在文本框消失焦点的时候,点击退格键,页面就回退了,下面是一种屏蔽页面回退键的方法(在网上找的,具体的地址忘记了!!!)。 //处理键盘事件 禁止后退键(Backspace)密码或单行、...