美文网首页
浏览器兼容之js事件处理

浏览器兼容之js事件处理

作者: 蒋蒋_dbfe | 来源:发表于2019-11-05 12:10 被阅读0次

最近在看《JavaScript高级程序设计》这本书,刚开始看着密密麻麻的文字还是蛮头疼的,但是越看越有意思。这里我截取了其中的一段代码----跨浏览器的事件对象,这个在我们真实项目中针对跨浏览器和一些老的浏览器版本兼容还是有一点的参考价值,具体代码如下。

<!DOCTYPE html>
<html>
<head>
    <title>跨浏览器事件对象</title>
</head>
<body>
    <button id="mybtn">点击</button>
<script type="text/javascript">
    var EventUtil = {
        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;
            }
        },
        removeHandler:function(element,type,handler){
            if(element.removeEventListener){
                element.removeEventListener(type,handler,false)
            }else if(element.detachEvent){
                element.detachEvent('on'+type,handler)
            }else{
                element['on'+type] = null;
            }
        },
        getEvent: function(event){
            return event? event : window.event;
        },
        getTarget: function(event){
            return event.target || event.srcElement;
        },
        preventDefault: function(event){
            if(event.preventDefault){
                event.preventDefault();
            }else{
                event.returnValue = false;
            }
        },
        stopePropagation: function(event){ //ie不支持事件捕获,所以该方法在跨浏览器的情况就只能够阻止事件冒泡
            if(event.stopePropagation){
                event.stopePropagation();
            }else{
                event.cancelBubble = true;
            }
        }
    }
    //具体使用
    var btn = document.getElementById('mybtn');
    var handler = function(){
        alert('show the content')
    }
    EventUtil.addHandler(btn,"click",handler);
</script>
</body>
</html>

简单说明

1、普通浏览器添加事件: element.addEventListener(type,functionName,boolean) element.removeEventListener(type,functionName,boolean) ,boolean为true事件捕获,false事件冒泡
2、ie8以前添加事件: elemnt.attachEvent("on"+type,functionName) elemnt.detachEvent("on"+type,functionName) ,均为事件冒泡
3、其它老版本添加事件:element["on"+type]=function(){} element["on"+type]=null; 两种,事件捕获和事件冒泡

其它:ie和DOM的事件对象event不一致,所以在操做事件对象时会有不同的处理,所以新增加了四个方法getEvent、getTarget、preventDefault、stopePropagation

相关文章

  • 浏览器兼容之js事件处理

    最近在看《JavaScript高级程序设计》这本书,刚开始看着密密麻麻的文字还是蛮头疼的,但是越看越有意思。这里我...

  • jquery 如何绑定事件?直接绑定和使用事件代理分别如何使用

    事件绑定 事件处理中最头疼的就是浏览器兼容问题,jQuery封装了很好的API,可以方便的进行事件处理 在1.7之...

  • 鼠标滚轮事件

    使用js对鼠标滚轮事件进行控制,滚轮事件其中考虑浏览器兼容性问题其中火狐浏览器事件为:"DOMMousescrol...

  • js图片上传预览兼容写法

    index js图片上传预览兼容写法 __veblen 浏览器厂商不同,实现某种特定功能需要进行兼容处理,如图片预...

  • jQuery

    jQuery.js js类库 a. 浏览器的兼容性处理完善,兼容ie6 b. DOM操作接口简单,容易上手 c....

  • 手写代码

    手写事件侦听器,并要求兼容浏览器 手写事件模型 手写事件代理,并要求兼容浏览器 手写事件触发器,并要求兼容浏览器 ...

  • 遗忘的知识点回顾

    1.事件onkeydown onkeyup 连等,可用oninput 事件当输入时(高级浏览器好用)处理兼容:on...

  • Web API -- 触屏事件

    1.1. 触屏事件 1.1.1 触屏事件概述 移动端浏览器兼容性较好,我们不需要考虑以前 JS 的兼容性问题,可以...

  • webAPI-day-07(触屏事件,click,移动端常用框架

    1.1. 触屏事件 1.1.1 触屏事件概述 移动端浏览器兼容性较好,我们不需要考虑以前 JS 的兼容性问题,可以...

  • 08JavaScript-移动端

    触屏事件概述 移动端浏览器兼容性较好,我们不需要考虑以前 JS 的兼容性问题,可以放心的使用原生 JS 书写效果,...

网友评论

      本文标题:浏览器兼容之js事件处理

      本文链接:https://www.haomeiwen.com/subject/rkusbctx.html