封装兼容低版本浏览器的事件监听函数
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
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论