文档章节

假装禁止浏览器backspace键,真实效果就是你如果不点击body区域,你按backspace还是禁止不了

chen12192413
 chen12192413
发布于 2017/07/19 16:27
字数 372
阅读 6
收藏 0

//添加监听事件做到兼容所有浏览器
        var EventUtil = {
            getEvent: function(e){
                return e ? e :window.event;
            },
            addHandler:function(element, type, handler){
                if(element.addEventListener){
                    element.addEventListener(type, handler, false)
                } else if (element.attachEvent){
                    element.attachEvent("on"+type, handler)
                } else {
                    element["on" + type] = handler;
                }
            },
            removeHander:function(element, type, handler){
                if(removeEventListener){
                    element.removeEventListener(type, handler, false);
                } else if (element.detachEvent){
                    element.detachEvent("on"+type, handler)
                } else {
                    element["on" + type] = null;
                }
            },
            trim:function(str) {
              return str.replace(/(^\s+)|(\s+$)/g, "");
            },
            keyCode:function(e){
                return event.keyCode ? event.keyCode : (event.which ? event.which : event.charCode);
            },
            handler: function(event){
                 event = event || window.event;
                  var keyCode = event.keyCode ? event.keyCode : (event.which ? event.which : event.charCode);
                  if (keyCode == 13) {
                      EventUtil.submit();
                }
            },
            getWheelDelta: function (event) {
                e = EventUtil.getEvent(event);
                if(e.shiftKey){
                    e.preventDefault ? e.preventDefault(): e.returnValue= false;
                }
                if(e.ctrlKey){
                    e.preventDefault ? e.preventDefault(): e.returnValue= false;
                }
            },
            handleMouseWheel:function(event) {
                event = EventUtil.getEvent(event);
                var delta = EventUtil.getWheelDelta(event);
            },
            forbidBackspace:function(e){
                event = EventUtil.getEvent(e);
                keyCode = EventUtil.keyCode(event);
                var obj = event.relatedTarget || event.srcElement || event.target || event.currentTarget;
                if(keyCode == 8){
                    var tagName = obj.nodeName //标签名称
                    //如果标签不是input或者textarea则阻止Backspace
                    if(tagName!='INPUT' && tagName!='TEXTAREA'){
                        return EventUtil.stopIE(event);
                    }
                    var tagType = obj.type.toUpperCase();//标签类型
                    //input标签除了下面几种类型,全部阻止Backspace
                    if(tagName=='INPUT' && (tagType!='TEXT' && tagType!='TEXTAREA' && tagType!='PASSWORD')){
                        return EventUtil.stopIE(event);
                    }
                    //input或者textarea输入框如果不可编辑则阻止Backspace
                    if((tagName=='INPUT' || tagName=='TEXTAREA') && (obj.readOnly==true || obj.disabled ==true)){
                        return EventUtil.stopIE(event);
                    }
                }
            },
            stopIE:function(e){
                event = EventUtil.getEvent(e);
                if(event.preventDefault ){
                     //preventDefault()方法阻止元素发生默认的行为
                     event.preventDefault();
                   }
                if(event.returnValue){
                     //IE浏览器下用window.event.returnValue = false;实现阻止元素发生默认的行为
                     event.returnValue = false;
                }
                return false;
            }
        }
        EventUtil.addHandler(document, "mousewheel", EventUtil.handleMouseWheel);
        EventUtil.addHandler(document, "DOMMouseScroll", EventUtil.handleMouseWheel);
        EventUtil.addHandler(document,'keydown', EventUtil.forbidBackspace);
        EventUtil.addHandler(document,'keypress', EventUtil.forbidBackspace);

© 著作权归作者所有

上一篇: 干货代码
下一篇: 干货代码
chen12192413
粉丝 0
博文 2
码字总数 598
作品 0
贵阳
私信 提问
用readOnly后按Backspace键会执行到上一步

用readOnly后按Backspace键会执行到上一步。可以通过js禁止 function document.onkeydown() { if (event.keyCode == 8) { //alert(document.activeElement.type); if (document.activeEleme......

donglujie
2014/01/06
0
0
关于屏蔽浏览器退格键的几个尝试

大部分浏览器在浏览网页时,按退格键(BackSpace)会触发后退操作。但我希望尝试下如何屏蔽此功能。 我使用的操作系统为Win7,我用于测试的三个浏览器版本信息如下: 1、Internet Exlorer 8....

北风其凉
2016/05/20
678
1
Spacemacs下的一些小技巧

使用Xshell 使用Xshell中的鼠标操作 在Xshell中, ctrl + insert 是复制终端里面的字符到Windows里,Shift + insert 是把windows 粘贴板里面内容复制到终端里。 在终端设置 256色 调整backs...

greister
2016/11/28
60
0
Google Chrome 将禁止“退格键”作为后退按钮使用

在Google Chrome浏览器中,“退格键(Backspace)”具有“后退/转到上一页”的功能,如果用户在一个页面输入了内容,不小心点击退格键不是删除一个单词而是删除了所有输入的内容,这给用户造...

oschina
2016/05/21
6.4K
34
Flash调试工具--Arthropod

Arthropod是一款Flash Debug工具。 ... 作者计划将Arthropod做成Flash调试器的不二之选。 如何使用 Arthropod真正简单易用。基本上您唯一需要做的事情就是import Debug类,调用log方法写日志...

匿名
2011/09/28
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

面试题:你简历中写到熟悉Spring源码,那你给我说说它用到了那些设计模式?

Spring作为业界的经典框架,无论是在架构设计方面,还是在代码编写方面,都堪称行内典范。好了,话不多说,开始今天的内容。 spring中常用的设计模式达到九种。 模板方法(Template Method)...

我最喜欢三大框架
16分钟前
1
0
Sentinel Dashboard中修改规则同步到Nacos

上一篇我们介绍了如何通过改造Sentinel Dashboard来实现修改规则之后自动同步到Apollo。下面通过这篇,详细介绍当使用Nacos作为配置中心之后,如何实现Sentinel Dashboard中修改规则同步到N...

程序猿DD
23分钟前
4
0
Jenkins发送测试报告邮件

简介:总结怎么使用Jenkins执行自动化测试后发送测试报告邮件 一、系统设置 1、在Jenkins安装Email Extension Plugin插件,如下图: 2、设置Extended E-mail Notification (1)进入“系统管理”...

shzwork
25分钟前
1
0
状态模式

//相当把一个State对象存到Context对象中,然后通过Context实例化对象调用保存的state对象去调用state的相应的方法 https://blog.csdn.net/syc434432458/article/details/51210361...

南桥北木
37分钟前
3
0
基于 Jenkins + JaCoCo 实现功能测试代码覆盖率统计

本文首发于:Jenkins 中文社区 使用 JaCoCo 统计功能测试代码覆盖率? 对于 JaCoCo,有所了解但又不是很熟悉。 "有所了解"指的是在 CI 实践中已经使用 JaCoCo 对单元测试代码覆盖率统计: 当...

Jenkins中文社区
44分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部