背景说明:
今天项目测试中,同事发现一个Bug,当键盘敲下后退键(Backspace)后,浏览器自动后退,不符合需求,故建议禁止浏览器后退键。
提出需求:
当键盘敲下后退键(Backspace)后
1、禁止浏览器自动后退
2、但不影响密码、单行文本、多行文本输入框等的回退操作
解决方案:
网上搜了一下,发现有不少解决方案,相比较之下,zywang的方案较佳,(原文见http://zywang.iteye.com/blog/700263)
在其基础上,进行补充和完善,以满足需求,整理后的代码如下:
<script type="text/javascript">
//处理键盘事件 禁止后退键(Backspace)密码或单行、多行文本框除外
function banBackSpace(e){
var ev = e || window.event;//获取event对象
var obj = ev.target || ev.srcElement;//获取事件源
var t = obj.type || obj.getAttribute('type');//获取事件源类型
//获取作为判断条件的事件类型
var vReadOnly = obj.getAttribute('readonly');
var vEnabled = obj.getAttribute('enabled');
//处理null值情况
vReadOnly = (vReadOnly == null) ? false : vReadOnly;
vEnabled = (vEnabled == null) ? true : vEnabled;
//当敲Backspace键时,事件源类型为密码或单行、多行文本的,
//并且readonly属性为true或enabled属性为false的,则退格键失效
var flag1=(ev.keyCode == 8 && (t=="password" || t=="text" || t=="textarea")
&& (vReadOnly==true || vEnabled!=true))?true:false;
//当敲Backspace键时,事件源类型非密码或单行、多行文本的,则退格键失效
var flag2=(ev.keyCode == 8 && t != "password" && t != "text" && t != "textarea")
?true:false;
//判断
if(flag2){
return false;
}
if(flag1){
return false;
}
}
//禁止后退键 作用于Firefox、Opera
document.onkeypress=banBackSpace;
//禁止后退键 作用于IE、Chrome
document.onkeydown=banBackSpace;
</script>
分享到:
相关推荐
如下所示: ...vue阻止浏览器后退按钮与js相同,同样没有脱离原生的js 以上这篇在vue中阻止浏览器后退的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。
页面禁止各种浏览器后退
解决方案2:禁用浏览器后退键 [removed] window.history.forward(1); 结果和方案一一样的结果,pad上没效果 解决方案3:Response.Write(“[removed][removed].replace(‘login.aspx’)[removed]”);仍旧可以后退,...
js禁止Backspace键使浏览器后退的实现方法.docx
下面小编就为大家带来一篇js禁止浏览器页面后退功能的实例(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
下面小编就为大家带来一篇js禁止Backspace键使浏览器后退的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
主要介绍了JavaScript阻止浏览器返回按钮的方法,可实现通过javascript禁用掉返回按钮的功能,需要的朋友可以参考下
在开发vue应用中,如何禁用浏览器的前进后退功能呢? 网上搜到的答案基本如下: history.pushState(null, null, document.URL) window.addEventListener('popstate', function() { history.pushState(null, null, ...
history.forward();
直接来个终极方案: 查找了好多资料才找到的,这种方式,可以消除 后退的所有动作。包括 键盘、鼠标手势等产生的后退动作。 [removed] //防止页面后退 ...在常用浏览器中,都可以禁用了后退。 具体
[removed] 利用JS产生一个“前进”的动作,以抵消后退功能,这种方法应该是最简洁的,并且不需要考虑用户连点两次或多次“后退”的情况,缺点是当用户端禁用了JavaScript之后即失效。 2、 代码如下: <A> Logout ...
代码如下: $(function(){ //处理键盘事件 禁止后退键(Backspace)密码或单行、多行文本框除外 function banBackSpace(e){ var ev = e || window.event;//获取event对象 var obj = ev.target || ev.srcElement;/
我想在注销后禁用浏览器的后退按钮。我已经将注销事件的session [“ session-id”]设置为null。但是当我按下浏览器的Back按钮时,它将重定向到该安全页面,我已经注销了。请给我有关此问题的任何解决方案。
今天在IE浏览器下发现,当把使用readonly=”readonly”属性将文本框设置成只读<input type=”text” readonly=”...//处理键盘事件 禁止后退键(Backspace)密码或单行、多行文本框除外 function banBackSpace(e
您好,请看以下链接。希望对您有所帮助。.使用javascript [^]禁用向后按钮
今天在IE浏览器下发现,当把使用readonly="readonly"属性将文本框设置成只读<input type="text" readonly="readonly... //处理键盘事件 禁止后退键(Backspace)密码或单行、多行文本框除外 function banBackSpace