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一些不错的函数脚本代码
Sep 10 Javascript
JQuery slideshow的一个小问题(如何发现及解决过程)
Feb 06 Javascript
laytpl 精致巧妙的JavaScript模板引擎
Aug 29 Javascript
jquery分割字符串的方法
Jun 24 Javascript
JS判断两个对象内容是否相等的方法示例
Apr 10 Javascript
深入解析js轮播插件核心代码的实现过程
Apr 14 Javascript
jQuery EasyUI Layout实现tabs标签的实例
Sep 26 jQuery
JS实现点击复选框变更DIV显示状态的示例代码
Dec 18 Javascript
微信小程序模版渲染详解
Jan 26 Javascript
vue-cli 2.*中导入公共less文件的方法步骤
Nov 22 Javascript
如何使用CSS3和JQuery easing 插件制作绚丽菜单
Jun 18 jQuery
vue中上传视频或图片或图片和文字一起到后端的解决方法
Dec 01 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
WINDOWS下php5.2.4+mysql6.0+apache2.2.4+ZendOptimizer-3.3.0配置
2008/03/28 PHP
使用jQuery简化Ajax开发 Ajax开发入门
2009/10/14 Javascript
javascript for循环设法提高性能
2010/02/24 Javascript
JS中confirm,alert,prompt函数区别分析
2011/01/17 Javascript
jQuery.event兼容各浏览器的event详细解析
2013/12/18 Javascript
JavaScript中的prototype和constructor简明总结
2014/04/05 Javascript
javascript中with()方法的语法格式及使用
2014/08/04 Javascript
JS DOM实现鼠标滑动图片效果
2020/09/17 Javascript
Bootstrap表格和栅格分页实例详解
2016/05/20 Javascript
cropper js基于vue的图片裁剪上传功能的实现代码
2018/03/01 Javascript
Node.js安装详细步骤教程(Windows版)详解
2019/09/01 Javascript
使用Easyui实现查询条件的后端传递并自动刷新表格的两种方法
2019/09/09 Javascript
在vue中实现禁止屏幕滚动,禁止屏幕滑动
2020/07/22 Javascript
Vue优化:常见会导致内存泄漏问题及优化详解
2020/08/04 Javascript
vue使用echarts画组织结构图
2021/02/06 Vue.js
[03:27]最受玩家喜爱奖提名:PZH_Element 致玩家寄语
2016/12/20 DOTA
Python itertools模块详解
2015/05/09 Python
浅谈python新手中常见的疑惑及解答
2016/06/14 Python
django基础之数据库操作方法(详解)
2017/05/24 Python
对numpy中轴与维度的理解
2018/04/18 Python
python逆序打印各位数字的方法
2018/06/25 Python
Python matplotlib画图时图例说明(legend)放到图像外侧详解
2020/05/16 Python
使用Keras 实现查看model weights .h5 文件的内容
2020/06/09 Python
使用Keras实现简单线性回归模型操作
2020/06/12 Python
Window10上Tensorflow的安装(CPU和GPU版本)
2020/12/15 Python
HTML5 history新特性pushState、replaceState及两者的区别
2015/12/26 HTML / CSS
浅谈h5自定义audio(问题及解决)
2016/08/19 HTML / CSS
菲律宾酒店预订网站:Hotels.com菲律宾
2017/07/12 全球购物
墨西哥网上超市:Superama
2018/07/10 全球购物
全国文明单位申报材料
2014/05/31 职场文书
电子专业求职信
2014/06/19 职场文书
高中课前三分钟演讲稿
2014/08/18 职场文书
审计局2014法制宣传日活动总结
2014/11/01 职场文书
2015年街道办事处团委工作总结
2015/10/14 职场文书
解决Navicat for MySQL 连接 MySQL 报2005错误的问题
2021/05/29 MySQL
JavaWeb Servlet实现网页登录功能
2021/07/04 Java/Android