js禁止Backspace键使浏览器后退的实现方法

作者:jingxian 时间:2024-04-17 09:54:05 

在项目中遇到按下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;

来源:http://www.cnblogs.com/lujiulong/p/6019638.html

标签:js,禁止,浏览器,后退,Backspace键
0
投稿

猜你喜欢

  • 解读iPhone平台的一些优秀设计思路

    2010-06-24 21:53:00
  • Python基本语法经典教程

    2021-08-25 18:16:51
  • python中文分词教程之前向最大正向匹配算法详解

    2023-07-23 12:51:22
  • Python解析nginx日志文件

    2023-09-07 18:22:09
  • 从Context到go设计理念轻松上手教程

    2024-05-13 10:41:07
  • 关于python DataFrame的合并方法总结

    2022-02-02 14:13:58
  • Python中多线程thread与threading的实现方法

    2021-08-24 08:34:38
  • 基于python实现高速视频传输程序

    2022-04-01 02:14:17
  • PHP registerXPathNamespace()函数讲解

    2023-06-05 01:58:00
  • Python程序员开发中常犯的10个错误

    2023-12-14 04:56:32
  • Python接口自动化浅析登录接口测试实战

    2021-06-06 21:48:13
  • 详解 PyTorch Lightning模型部署到生产服务中

    2021-10-23 01:17:25
  • 详解go语言中sort如何排序

    2023-09-03 14:00:38
  • 自动化Nginx服务器的反向代理的配置方法

    2022-08-07 04:02:07
  • MySQL中SQL Mode的查看与设置详解

    2024-01-26 12:14:08
  • windows环境下Mysql中文乱码问题解决方法

    2024-01-27 01:32:59
  • python面向对象 反射原理解析

    2021-05-14 08:56:32
  • python爬虫之爬取百度翻译

    2022-04-03 19:30:45
  • python Pandas如何对数据集随机抽样

    2023-10-02 08:28:13
  • Python中xml和json格式相互转换操作示例

    2023-04-26 18:02:39
  • asp之家 网络编程 m.aspxhome.com