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动画之圆形运动,环绕鼠标运动作小球
Jul 20 Javascript
jquery.jstree 增加节点的双击事件代码
Jul 27 Javascript
深入剖析JavaScript中的枚举功能
Mar 06 Javascript
jQuery实现购物车表单自动结算效果实例
Aug 10 Javascript
jQuery Mobile漏洞会有跨站脚本攻击风险
Feb 12 Javascript
使用jQuery的load方法设计动态加载及解决被加载页面js失效问题
Mar 01 Javascript
详谈jQuery Ajax(load,post,get,ajax)的用法
Mar 02 Javascript
jquery easyui如何实现格式化列
Jul 30 jQuery
bootstrap模态框嵌套、tabindex属性、去除阴影的示例代码
Oct 17 Javascript
layui点击弹框页面 表单请求的方法
Sep 21 Javascript
基于javascript canvas实现五子棋游戏
Jul 08 Javascript
HTML元素拖拽功能实现的完整实例
Dec 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 similar_text 字符串的相似性比较函数
2010/05/26 PHP
php数组函数序列之array_intersect() 返回两个或多个数组的交集数组
2011/11/10 PHP
PHP实现过滤掉非汉字字符只保留中文字符
2015/06/04 PHP
Symfony2实现在controller中获取url的方法
2016/03/18 PHP
详解PHP队列的实现
2019/03/14 PHP
jQuery插件 tabBox实现代码
2010/02/09 Javascript
通过js动态操作table(新增,删除相关列信息)
2012/05/23 Javascript
Vue如何引入远程JS文件
2017/04/20 Javascript
vue组件(全局,局部,动态加载组件)
2018/09/02 Javascript
VUE DOM加载后执行自定义事件的方法
2018/09/07 Javascript
详解如何在JS代码中消灭for循环
2019/12/11 Javascript
手动实现vue2.0的双向数据绑定原理详解
2021/02/06 Vue.js
[01:24:51]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS NewBee第二场
2014/05/26 DOTA
Python实现将不规范的英文名字首字母大写
2016/11/15 Python
基于Linux系统中python matplotlib画图的中文显示问题的解决方法
2017/06/15 Python
利用Python操作消息队列RabbitMQ的方法教程
2017/07/19 Python
用python代码将tiff图片存储到jpg的方法
2018/12/04 Python
Python实现的拉格朗日插值法示例
2019/01/08 Python
python实现AES加密解密
2019/03/28 Python
Python使用进程Process模块管理资源
2020/03/05 Python
python计算Content-MD5并获取文件的Content-MD5值方式
2020/04/03 Python
Pandas之read_csv()读取文件跳过报错行的解决
2020/04/21 Python
ansible-playbook实现自动部署KVM及安装python3的详细教程
2020/05/11 Python
如何通过python计算圆周率PI
2020/11/11 Python
Python3使用tesserocr识别字母数字验证码的实现
2021/01/29 Python
学党史心得体会
2014/09/05 职场文书
2014年乡镇人大工作总结
2014/11/25 职场文书
优秀护士事迹材料
2014/12/25 职场文书
诚信考试承诺书范文
2015/04/29 职场文书
春节晚会开场白
2015/05/29 职场文书
2015年教师节新闻稿
2015/07/17 职场文书
2015年法律事务部工作总结
2015/07/27 职场文书
2016年优秀团员事迹材料
2016/02/25 职场文书
导游词之云南-元阳梯田
2019/10/08 职场文书
Java实现聊天机器人完善版
2021/07/04 Java/Android
详解Flutter自定义应用程序内键盘的实现方法
2022/06/14 Java/Android