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 相关文章推荐
从Ajax到JQuery Ajax学习
Feb 14 Javascript
jQuery+Ajax实现无刷新分页
Oct 30 Javascript
JavaScript encodeURI 和encodeURIComponent
Dec 04 Javascript
Linux CentOS系统下安装node.js与express的方法
Apr 01 Javascript
js+html5实现页面可刷新的倒计时效果
Jul 15 Javascript
详解基于Vue,Nginx的前后端不分离部署教程
Dec 04 Javascript
详解vue 2.6 中 slot 的新用法
Jul 09 Javascript
微信小程序实现点击空白隐藏的方法示例
Aug 13 Javascript
vue仿ios列表左划删除
Sep 26 Javascript
小程序实现按下录音松开识别语音
Nov 22 Javascript
JavaScript中变量提升机制示例详解
Dec 27 Javascript
浅析JavaScript预编译和暗示全局变量
Sep 03 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/03/24 PHP
php生成随机字符串可指定纯数字、纯字母或者混合的
2014/04/18 PHP
PHP中的switch语句的用法实例详解
2015/10/21 PHP
YII Framework框架教程之国际化实现方法
2016/03/14 PHP
PHP中soap用法示例【SoapServer服务端与SoapClient客户端编写】
2018/12/25 PHP
使用隐藏的new来创建对象
2011/03/29 Javascript
JavaScript 匿名函数(anonymous function)与闭包(closure)
2011/10/04 Javascript
文本框中禁止非数字字符输入比如手机号码、邮编
2013/08/19 Javascript
JS 打印界面的CSS居中代码适用所有浏览器
2014/03/19 Javascript
js实现适合新闻类图片的轮播效果
2017/02/05 Javascript
Vue.js开发环境快速搭建教程
2017/03/17 Javascript
javascript 中iframe高度自适应(同域)实例详解
2017/05/16 Javascript
Vue之beforeEach非登录不能访问的实现(代码亲测)
2019/07/18 Javascript
vue源码nextTick使用及原理解析
2019/08/13 Javascript
vue实现扫码功能
2020/01/17 Javascript
Python的Django中将文件上传至七牛云存储的代码分享
2016/06/03 Python
深入探究Django中的Session与Cookie
2017/07/30 Python
Python基于socket模块实现UDP通信功能示例
2018/04/10 Python
利用Python写一个爬妹子的爬虫
2018/06/08 Python
Django实现表单验证
2018/09/08 Python
python GUI库图形界面开发之PyQt5拖放控件实例详解
2020/02/25 Python
python多维数组分位数的求取方式
2020/03/03 Python
通过自学python能找到工作吗
2020/06/21 Python
Python如何实现自带HTTP文件传输服务
2020/07/08 Python
python中yield的用法详解
2021/01/13 Python
使用CSS3滤镜的filter:blur属性制作毛玻璃模糊效果的方法
2016/07/08 HTML / CSS
Css3新特性应用之形状总结
2016/12/08 HTML / CSS
实习评语
2013/12/16 职场文书
分公司总经理岗位职责
2014/08/03 职场文书
第二批党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
小学班主任工作总结2015
2015/04/07 职场文书
休假证明书
2015/06/24 职场文书
公司老总年会致辞
2015/07/30 职场文书
Spark SQL 2.4.8 操作 Dataframe的两种方式
2021/10/16 SQL Server
古见同学有交流障碍症 第二季宣传CM公开播出
2022/04/11 日漫
JS前端使用Canvas快速实现手势解锁特效
2022/09/23 Javascript