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 相关文章推荐
Lazy Load 延迟加载图片的 jQuery 插件
Feb 06 Javascript
学习从实践开始之jQuery插件开发 对话框插件开发
Apr 26 Javascript
js 设置缓存及获取设置的缓存
May 08 Javascript
实用框架(iframe)操作代码
Oct 23 Javascript
javascript事件委托的方式绑定详解
Jun 10 Javascript
AngularJs $parse、$eval和$observe、$watch详解
Sep 21 Javascript
BootStrap实现带有增删改查功能的表格(DEMO详解)
Oct 26 Javascript
jQuery封装animate.css的实例
Jan 04 jQuery
如何正确理解vue中的key详解
Nov 02 Javascript
如何在selenium中使用js实现定位
Aug 18 Javascript
图解JS原型和原型链实现原理
Sep 15 Javascript
vue项目打包后提交到git上为什么没有dist这个文件的解决方法
Sep 16 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
ionCube 一款类似zend的PHP加密/解密工具
2010/07/25 PHP
php调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别
2012/08/08 PHP
php从数组中随机选择若干不重复元素的方法
2015/03/14 PHP
PHP工程师VIM配置分享
2015/12/15 PHP
php分页原理 分页代码 分页类制作教程
2016/09/23 PHP
firefox firebug中文入门教程 脚本之家新年特别版
2010/01/02 Javascript
JavaScript 用cloneNode方法克隆节点的代码
2012/10/15 Javascript
javascript跑马灯悬停放大效果实现代码
2012/12/12 Javascript
如何获取select下拉框的值(option没有及有value属性)
2013/11/08 Javascript
js 调用百度地图api并在地图上进行打点添加标注
2014/05/13 Javascript
如何用angularjs制作一个完整的表格
2016/01/21 Javascript
JavaScript自学笔记(必看篇)
2016/06/23 Javascript
浅谈JS运算符&&和|| 及其优先级
2016/08/10 Javascript
使用jQuery的toggle()方法对HTML标签进行显示、隐藏的方法(示例)
2016/09/01 Javascript
深入理解React Native原生模块与JS模块通信的几种方式
2017/07/24 Javascript
vue+vux实现移动端文件上传样式
2017/07/28 Javascript
python局部赋值的规则
2013/03/07 Python
python使用新浪微博api上传图片到微博示例
2014/01/10 Python
Python实现的单向循环链表功能示例
2017/11/10 Python
Python中的asyncio代码详解
2019/06/10 Python
pytorch sampler对数据进行采样的实现
2019/12/31 Python
python随机生成大小写字母数字混合密码(仅20行代码)
2020/02/01 Python
Python流程控制常用工具详解
2020/02/24 Python
python tkinter之顶层菜单、弹出菜单实例
2020/03/04 Python
python实现在内存中读写str和二进制数据代码
2020/04/24 Python
浅谈python出错时traceback的解读
2020/07/15 Python
20行代码教你用python给证件照换底色的方法示例
2021/02/05 Python
影视动画专业个人的自我评价
2013/12/31 职场文书
清华大学自主招生自荐信
2014/01/29 职场文书
中华在我心中演讲稿
2014/09/13 职场文书
戒毒悔改检讨书
2014/09/21 职场文书
事业单位人员的自我评价范文
2014/09/21 职场文书
2014年销售内勤工作总结
2014/12/01 职场文书
2015年项目经理工作总结
2015/04/30 职场文书
员工辞职信范文大全
2015/05/12 职场文书
js不常见操作运算符总结
2021/11/20 Javascript