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 相关文章推荐
jquery仿百度百科底部浮动导航特效
Aug 08 Javascript
解决jQuery上传插件Uploadify出现Http Error 302错误的方法
Dec 18 Javascript
BootStrap 智能表单实战系列(十)自动完成组件的支持
Jun 13 Javascript
JavaScript实现垂直向上无缝滚动特效代码
Nov 23 Javascript
jQuery 出现Cannot read property ‘msie’ of undefined错误的解决方法
Nov 23 Javascript
Javascript 详解封装from表单数据为json串进行ajax提交
Mar 29 Javascript
JavaScript实现二维坐标点排序效果
Jul 18 Javascript
JS手机端touch事件计算滑动距离的方法示例
Oct 26 Javascript
详解在React里使用"Vuex"
Apr 02 Javascript
jQuery实现参数自定义的文字跑马灯效果
Aug 15 jQuery
cordova+vue+webapp使用html5获取地理位置的方法
Jul 06 Javascript
微信小程序云函数添加数据到数据库的方法
Mar 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
全国FM电台频率大全 - 21 海南省
2020/03/11 无线电
php 生成WML页面方法详解
2009/08/09 PHP
php预定义变量使用帮助(带实例)
2013/10/30 PHP
php判断手机访问还是电脑访问示例分享
2014/01/20 PHP
CI框架自动加载session出现报错的解决办法
2014/06/17 PHP
Symfony学习十分钟入门经典教程
2016/02/03 PHP
PHP文件与目录操作示例
2016/12/24 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
2017/12/25 PHP
Javascript在IE下设置innerHTML时出现未知的运行时错误的解决方法
2011/01/12 Javascript
jquery插件jquery.dragscale.js实现拖拽改变元素大小的方法(附demo源码下载)
2016/02/25 Javascript
Google 地图叠加层实例讲解
2016/08/06 Javascript
bootstrap表单按回车会自动刷新页面的解决办法
2017/03/08 Javascript
javascript使用btoa和atob来进行Base64转码和解码
2017/03/20 Javascript
vue filter 完美时间日期格式的代码
2019/08/14 Javascript
vue实现倒计时获取验证码效果
2020/04/17 Javascript
[55:25]VGJ.T vs Optic Supermajor小组赛D组 BO3 第三场 6.3
2018/06/04 DOTA
跟老齐学Python之有容乃大的list(2)
2014/09/15 Python
利用Python实现网络测试的脚本分享
2017/05/26 Python
python3.6.3+opencv3.3.0实现动态人脸捕获
2018/05/25 Python
python反编译学习之字节码详解
2019/05/19 Python
Python中一个for循环循环多个变量的示例
2019/07/16 Python
tensorflow 初始化未初始化的变量实例
2020/02/06 Python
Python爬取微信小程序通用方法代码实例详解
2020/09/29 Python
CSS3中:nth-child和:nth-of-type的区别深入理解
2014/03/10 HTML / CSS
印度最大的酒店品牌网络:OYO Rooms
2016/07/24 全球购物
2013年办公室秘书的个人自我鉴定
2013/10/24 职场文书
音乐学院硕士生的自我评价分享
2013/11/01 职场文书
好的演讲稿开场白
2013/12/30 职场文书
大学同学聚会邀请函
2014/01/19 职场文书
小学生读书感言
2014/02/12 职场文书
保险专业求职信
2014/07/07 职场文书
2014年图书馆个人工作总结
2014/12/18 职场文书
给老师的一封感谢信
2015/01/20 职场文书
倡议书的格式写法
2015/04/28 职场文书
2016年情人节问候语
2015/11/11 职场文书
2016中秋节晚会开场白
2015/11/26 职场文书