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 相关文章推荐
类之Prototype.js学习
Jun 13 Javascript
jQuery EasyUI API 中文文档 - ProgressBar 进度条
Sep 29 Javascript
javascript:json数据的页面绑定示例代码
Jan 26 Javascript
JavaScript调用客户端Java程序的方法
Jul 27 Javascript
js实现下拉菜单效果
Mar 01 Javascript
vue实现百度搜索下拉提示功能实例
Jun 14 Javascript
微信小程序顶部可滚动导航效果
Oct 31 Javascript
在vscode中统一vue编码风格的方法
Feb 22 Javascript
JS实现的JSON数组去重算法示例
Apr 11 Javascript
layui实现点击按钮给table添加一行
Aug 10 Javascript
vue实现点击选中,其他的不选中方法
Sep 05 Javascript
vue中如何实现后台管理系统的权限控制的方法步骤
Sep 05 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自动反斜杠的函数代码
2010/01/05 PHP
php全局变量和类配合使用深刻理解
2013/06/05 PHP
[原创]php求圆周率的简单实现方法
2016/05/30 PHP
JavaScript中对象property的读取和写入方法介绍
2014/12/30 Javascript
JQuery的Pager分页器实现代码
2016/05/03 Javascript
jquery选择器中的空格与大于号>、加号+与波浪号~的区别介绍
2016/06/24 Javascript
jquery配合.NET实现点击指定绑定数据并且能够一键下载
2016/10/28 Javascript
Angular ng-repeat遍历渲染完页面后执行其他操作详细介绍
2016/12/13 Javascript
微信小程序 websocket 实现SpringMVC+Spring+Mybatis
2017/08/04 Javascript
Vue slot用法(小结)
2018/10/22 Javascript
小程序如何构建骨架屏
2019/05/29 Javascript
[00:48]完美“圣”典2016风云人物:xiao8宣传片
2016/11/30 DOTA
视觉直观感受若干常用排序算法
2017/04/13 Python
R vs. Python 数据分析中谁与争锋?
2017/10/18 Python
python监控文件并且发送告警邮件
2018/06/21 Python
python 判断三个数字中的最大值实例代码
2019/07/24 Python
Python实现性能自动化测试竟然如此简单
2019/07/30 Python
解决Django migrate不能发现app.models的表问题
2019/08/31 Python
python 利用zmail库发送邮件
2020/09/11 Python
python切片作为占位符使用实例讲解
2021/02/17 Python
我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?
2014/03/30 面试题
材料加工硕士生求职信
2013/10/10 职场文书
个人简历自荐信
2013/12/05 职场文书
采购人员的个人自我评价
2014/01/16 职场文书
人力资源部经理助理岗位职责
2014/03/04 职场文书
一年级学生期末评语
2014/04/21 职场文书
2014年度安全生产目标管理责任书
2014/07/25 职场文书
给老婆的保证书
2015/01/16 职场文书
单位委托函范文
2015/01/29 职场文书
求职信内容一般写什么?
2015/03/20 职场文书
优秀乡村医生事迹材料(2016精选版)
2016/02/29 职场文书
字典算法实现及操作 --python(实用)
2021/03/31 Python
如何用python反转图片,视频
2021/04/24 Python
浅谈mysql返回Boolean类型的几种情况
2021/06/04 MySQL
Spring实现内置监听器
2021/07/09 Java/Android
python 远程执行命令的详细代码
2022/02/15 Python