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 相关文章推荐
在textarea中显示html页面的javascript代码
Apr 20 Javascript
图片格式的JavaScript和CSS速查手册
Aug 20 Javascript
基于jQuery UI CSS Framework开发Widget的经验
Aug 21 Javascript
jQuery创建插件的代码分析
Apr 14 Javascript
理解JSON:3分钟课程
Oct 28 Javascript
javascript下拉列表菜单的实现方法
Nov 18 Javascript
详解AngularJS中ng-src指令的使用
Sep 07 Javascript
JavaScript正则表达式替换字符串中图片地址(img src)的方法
Jan 13 Javascript
JavaScript观察者模式(publish/subscribe)原理与实现方法
Mar 30 Javascript
JavaScript内存泄漏的处理方式
Nov 20 Javascript
vue中的自定义分页插件组件的示例
Aug 18 Javascript
vue全屏事件开发详解
Jun 17 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
解析dedecms空间迁移步骤详解
2013/05/15 PHP
PHP获取MSN好友列表类的实现代码
2013/06/23 PHP
如何运行/调试你的PHP代码
2020/10/23 PHP
JSON 入门指南 想了解json的朋友可以看下
2009/08/26 Javascript
jQuery 处理表单元素的代码
2010/02/15 Javascript
JavaScript 基础篇之运算符、语句(二)
2012/04/07 Javascript
Highcharts 非常实用的Javascript统计图demo示例
2013/07/03 Javascript
javascript实现网页字符定位的方法
2015/07/14 Javascript
BootStrap文件上传样式超好看【持续更新】
2016/05/10 Javascript
Javascript将双字节字符转换成单字节字符并计算长度
2016/06/22 Javascript
实例讲解JavaScript中call、apply、bind方法的异同
2016/09/13 Javascript
Angular4 中内置指令的基本用法
2017/07/31 Javascript
layer实现关闭弹出层刷新父界面功能详解
2017/11/15 Javascript
浅谈React组件之性能优化
2018/03/02 Javascript
jQuery实现鼠标移到某个对象时弹出显示层功能
2018/08/23 jQuery
react 应用多入口配置及实践总结
2018/10/17 Javascript
详解如何更好的使用module vuex
2019/03/27 Javascript
python抓取豆瓣图片并自动保存示例学习
2014/01/10 Python
Python实现的检测网站挂马程序
2014/11/30 Python
详解Python的Django框架中的中间件
2015/07/24 Python
python difflib模块示例讲解
2017/09/13 Python
使用Python通过win32 COM打开Excel并添加Sheet的方法
2018/05/02 Python
python  Django中的apps.py的目的是什么
2018/10/15 Python
用python求一重积分和二重积分的例子
2019/12/06 Python
python numpy--数组的组合和分割实例
2020/02/24 Python
appium+python自动化配置(adk、jdk、node.js)
2020/11/17 Python
实例教程 HTML5 Canvas 超炫酷烟花绽放动画实现代码
2014/11/05 HTML / CSS
Java servlet面试题
2012/03/04 面试题
大学四年个人自我小结
2014/03/05 职场文书
《大自然的语言》教学反思
2014/04/08 职场文书
全国法制宣传日活动总结2014
2014/11/01 职场文书
法定代表人免职证明
2015/06/24 职场文书
导游词之嵊泗列岛
2019/10/30 职场文书
CSS巧用渐变实现高级感背景光动画
2021/12/06 HTML / CSS
golang生成vcf通讯录格式文件详情
2022/03/25 Golang
Hive日期格式转换方法总结
2022/06/25 数据库