js禁止Backspace键使浏览器后退的实现方法


Posted in Javascript onSeptember 01, 2017

在项目中遇到按下Backspace键让浏览器后退的问题,上网搜了几种解决方案都不太理想。于是集众人之智,采众家之长,归纳如下:

1、在公用js中定义阻止Backspace的方法

function banBackSpace(e){
 var ev = e || window.event;
 //各种浏览器下获取事件对象
 var obj = ev.relatedTarget || ev.srcElement || ev.target ||ev.currentTarget;
 //按下Backspace键
 if(ev.keyCode == 8){
 var tagName = obj.nodeName //标签名称
 //如果标签不是input或者textarea则阻止Backspace
 if(tagName!='INPUT' && tagName!='TEXTAREA'){
  return stopIt(ev);
 }
 var tagType = obj.type.toUpperCase();//标签类型
 //input标签除了下面几种类型,全部阻止Backspace
 if(tagName=='INPUT' && (tagType!='TEXT' && tagType!='TEXTAREA' && tagType!='PASSWORD')){
  return stopIt(ev);
 }
 //input或者textarea输入框如果不可编辑则阻止Backspace
 if((tagName=='INPUT' || tagName=='TEXTAREA') && (obj.readOnly==true || obj.disabled ==true)){
  return stopIt(ev);
 }
 }
}
function stopIt(ev){
 if(ev.preventDefault ){
 //preventDefault()方法阻止元素发生默认的行为
 ev.preventDefault();
 }
 if(ev.returnValue){
 //IE浏览器下用window.event.returnValue = false;实现阻止元素发生默认的行为
 ev.returnValue = false;
 }
 return false;
}

方法注释写的很清晰了,这里不过多解释。

2、页面加载完成就调用该方法

$(function(){
 //实现对字符码的截获,keypress中屏蔽了这些功能按键
 document.onkeypress = banBackSpace;
 //对功能按键的获取
 document.onkeydown = banBackSpace;
 })

注:  按键事件触发顺序: keydown -> keypress ->textInput -> keyup

存在问题:select下拉列表展开后,无法获取键盘事件,此时按Backspace键,浏览器还是会回退到历史;解决办法:将select下拉框改为easyUI的combobox;

以上这篇js禁止Backspace键使浏览器后退的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery对表格进行操作的常用技巧总结
Apr 23 Javascript
使用时间戳解决ie缓存的问题
Aug 20 Javascript
jQuery表格列宽可拖拽改变且兼容firfox
Sep 03 Javascript
JS实现可拖曳、可关闭的弹窗效果
Sep 26 Javascript
JavaScript+CSS实现仿Mootools竖排弹性动画菜单效果
Oct 14 Javascript
使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo
Sep 01 Javascript
JS动态添加选项案例分析
Oct 17 Javascript
AngularJS指令与指令之间的交互功能示例
Dec 14 Javascript
javascript中replace使用方法总结
Mar 01 Javascript
javascript 跨域问题以及解决办法
Jul 17 Javascript
如何写好一个vue组件,老夫的一年经验全在这了(推荐)
May 18 Javascript
小程序自定义模板实现吸顶功能
Jan 08 Javascript
JavaScript中数组常见操作技巧
Sep 01 #Javascript
js禁止浏览器页面后退功能的实例(推荐)
Sep 01 #Javascript
使用JS和canvas实现gif动图的停止和播放代码
Sep 01 #Javascript
关于Promise 异步编程的实例讲解
Sep 01 #Javascript
[js高手之路]单例模式实现模态框的示例
Sep 01 #Javascript
JQuery EasyUI 结合ztrIee的后台页面开发实例
Sep 01 #jQuery
详解使用angular的HttpClient搭配rxjs
Sep 01 #Javascript
You might like
PHP中全面阻止SQL注入式攻击分析小结
2012/01/30 PHP
关于PHP的curl开启问题探讨
2014/04/08 PHP
FF IE兼容性的修改小结
2009/09/02 Javascript
JavaScript 程序编码规范
2010/11/23 Javascript
获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
2012/11/08 Javascript
jquery多选项卡效果实例代码(附效果图)
2013/03/23 Javascript
jQuery实现个性翻牌效果导航菜单的方法
2015/03/09 Javascript
详解AngularJS控制器的使用
2016/03/09 Javascript
vue proxyTable 接口跨域请求调试的示例
2017/09/12 Javascript
JS document对象简单用法完整示例
2020/01/14 Javascript
JavaScript观察者模式原理与用法实例详解
2020/03/10 Javascript
Jquery+AJAX实现无刷新上传并重命名文件操作示例【PHP后台接收】
2020/05/29 jQuery
使用 Github Actions 自动部署 Angular 应用到 Github Pages的方法
2020/07/20 Javascript
[00:36]DOTA2上海特级锦标赛 Alliance战队宣传片
2016/03/04 DOTA
Python中利用函数装饰器实现备忘功能
2015/03/30 Python
解决Python中字符串和数字拼接报错的方法
2016/10/23 Python
Python实现将数据框数据写入mongodb及mysql数据库的方法
2018/04/02 Python
对pandas中to_dict的用法详解
2018/06/05 Python
PyCharm设置SSH远程调试的方法
2018/07/17 Python
浅谈python中拼接路径os.path.join斜杠的问题
2018/10/23 Python
Python3实现腾讯云OCR识别
2018/11/27 Python
TensorFlow卷积神经网络之使用训练好的模型识别猫狗图片
2019/03/14 Python
解决Django加载静态资源失败的问题
2019/07/28 Python
python2.7的flask框架之引用js&css等静态文件的实现方法
2019/08/22 Python
Python整数与Numpy数据溢出问题解决
2019/09/11 Python
tensorflow实现读取模型中保存的值 tf.train.NewCheckpointReader
2020/02/10 Python
python读取excel数据并且画图的实现示例
2021/02/08 Python
html5视频媒体标签video的使用方法及完整参数说明详解
2019/09/27 HTML / CSS
优秀员工个人的自我评价
2013/11/29 职场文书
运动会通讯稿150字
2014/02/15 职场文书
给老师的一封建议书
2014/03/13 职场文书
汽车销售经理岗位职责
2014/06/09 职场文书
趣味运动会简讯
2015/07/20 职场文书
总经理2015中秋节致辞
2015/07/29 职场文书
社区志愿服务活动感想
2015/08/07 职场文书
Python闭包的定义和使用方法
2022/04/11 Python