JavaScript封装一个注册函数解决兼容问题

Posted CSU迦叶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript封装一个注册函数解决兼容问题相关的知识,希望对你有一定的参考价值。

我们知道javascript注册(绑定)事件主要有两类方式,第一类传统方式具有注册事件的唯一性,即对于同一元素的同一事件,不会出现两个处理函数,如下

    var btn = document.querySelector('button');

    btn.onclick = function(){
        document.body.style.backgroundColor = "yellow";
    }

第二类没有唯一性限制,具体有两种做法,其中addEventListener方法需要ie9以上浏览器支持,例如

    function handle(){
        document.body.style.backgroundColor = "yellow";
    }

    btn.addEventListener('click',handle);

另一种attachEvent需要ie9以前的浏览器支持,例如

    function handle(){
        document.body.style.backgroundColor = "yellow";
    }

    btn.attachEvent('onclick',handle);

兼容性处理原则是:首先照顾大多数浏览器,再处理特殊浏览器

然后又不希望被注册事件的唯一性限制住

因此,优先级是addEventListener>attachEvent>传统方式

    function addEventListener(element,eventName,handleFn){
        if(element.addEventListener){
            element.addEventListener(eventName,handleFn);
        }else if(element.attachEvent){
            element.attachEvent('on'+eventName,handleFn);
        }else{
            element['on'+eventName] = handleFn;
        }
    }

以上是关于JavaScript封装一个注册函数解决兼容问题的主要内容,如果未能解决你的问题,请参考以下文章

JS-特效 ~ 05. 缓动框架兼容封装/回掉函数/兼容透明度/层级旋转轮播图正则表达式验证表单注册账号

JQuery

JavaScript DOM操作案例封装innerText跟textContent函数(浏览器兼容)

JavaScript 分支函数 (解决兼容问题更好的方法)

前端学习笔记JavaScript 常用方法兼容性封装

01 - jQuery介绍和体验