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 相关文章推荐
JavaScript继承方式实例
Oct 29 Javascript
写js时遇到的一些小问题
Dec 06 Javascript
JavaScript 注册事件代码
Jan 27 Javascript
让网页跳转到指定位置的jquery代码非书签
Sep 06 Javascript
jquery如何扑捉回车键触发的事件
Apr 24 Javascript
Javascript基础知识(二)事件
Sep 29 Javascript
js跨域问题浅析及解决方法优缺点对比
Nov 08 Javascript
Javascript使用SWFUpload进行多文件上传
Nov 16 Javascript
AngularJS路由删除#符号解决的办法
Sep 28 Javascript
Vue中的无限加载vue-infinite-loading的方法
Apr 08 Javascript
微信小程序如何实现在线客服功能
Oct 16 Javascript
使用typescript改造koa开发框架的实现
Feb 04 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中通过curl模拟登陆discuz论坛的实现代码
2012/02/16 PHP
php定界符
2014/06/19 PHP
js cookies实现简单统计访问次数
2009/11/24 Javascript
css结合js制作下拉菜单示例代码
2014/02/27 Javascript
jQuery的load()方法及其回调函数用法实例
2015/03/25 Javascript
如何消除inline-block属性带来的标签间间隙
2016/03/31 Javascript
JavaScript:Date类型全面解析
2016/05/19 Javascript
jQuery实现按钮点击遮罩加载及处理完后恢复的效果
2016/06/07 Javascript
AngularJS 路由详解和简单实例
2016/07/28 Javascript
javascript-解决mongoose数据查询的异步操作
2016/12/22 Javascript
vue-router启用history模式下的开发及非根目录部署方法
2018/12/23 Javascript
vue element中axios下载文件(后端Python)
2019/05/10 Javascript
基于Taro的微信小程序模板消息-获取formId功能模块封装实践
2019/07/15 Javascript
详解Vue中CSS样式穿透问题
2019/09/12 Javascript
Vue 实现点击空白处隐藏某节点的三种方式(指令、普通、遮罩)
2019/10/23 Javascript
基于element-ui对话框el-dialog初始化的校验问题解决
2020/09/11 Javascript
[47:38]Optic vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[35:55]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.11
2020/12/13 DOTA
Python开发编码规范
2006/09/08 Python
在Python下利用OpenCV来旋转图像的教程
2015/04/16 Python
深入理解Python中range和xrange的区别
2017/11/26 Python
在cmd中运行.py文件: python的操作步骤
2018/05/12 Python
Python判断以什么结尾以什么开头的实例
2018/10/27 Python
selenium在执行phantomjs的API并获取执行结果的方法
2018/12/17 Python
python采集百度搜索结果带有特定URL的链接代码实例
2019/08/30 Python
基于Python执行dos命令并获取输出的结果
2019/12/30 Python
appium+python adb常用命令分享
2020/03/06 Python
PyCharm+PyQt5+QtDesigner配置详解
2020/08/12 Python
Python代码注释规范代码实例解析
2020/08/14 Python
雅萌 (YA-MAN) :日本美容家电领域的龙头企业
2017/05/12 全球购物
《诺贝尔》教学反思
2014/02/17 职场文书
《月迹》教学反思
2014/02/19 职场文书
2014年财务工作自我评价
2014/09/23 职场文书
2015年度团总支工作总结
2015/04/23 职场文书
运动会开幕式通讯稿
2015/07/18 职场文书
婚礼上证婚人致辞
2015/07/28 职场文书