封装兼容低版本浏览器的事件监听函数

chat

addEventListener——兼容:firefox、chrome、IE、safari、opera;不兼容IE7、IE8;
attachEvent——兼容:IE7、IE8;不兼容firefox、chrome、IE9、IE10、IE11、safari、opera;

addEventListener 解除事件监听: removeEventListener;
attachEvent 解除事件监听:detachEvent;

attachEvent 回调函数中的this指向的不是触发事件的dom,指向的是window.

function addCompatibilityEventListener(element, eventType, handler) {
        if (element.addEventListener) {
            element.addEventListener(eventType, handler, false)
        } else if (element.attachEvent) {
            element.attachEvent("on" + eventType, function () {
                handler.call(element)//因为attachEvent 中的 this 指向window
            })
        } else {
            element['on' + eventType] = handler;
        }

    }

例子:

<button class="click">click me</button>
 function test() {
        console.log(this)
    }


    addCompatibilityEventListener(document.getElementsByClassName("click")[0], "click", test);

相关注意点:在IE/Opera中,是window.event,而在Firefox/chrome中,是event,而事件的对象,在IE中是window.event.srcElement,其他浏览器是event.target

版权声明:
作者:东明兄
链接:https://blog.crazyming.com/note/513/
来源:CrazyMing
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
海报
封装兼容低版本浏览器的事件监听函数
addEventListener——兼容:firefox、chrome、IE、safari、opera;不兼容IE7、IE8; attachEvent——兼容:IE7、IE8;不兼容firefox、chrome、IE9、IE10、IE11、saf……
<<上一篇
下一篇>>
chat