addEvent完美封装(addEventListener兼容性封装)

addEventListener兼容各大浏览器封装

封装:addEvent.js

/**  
* element           要绑定事件的对象,及HTML节点。
* type              事件名称,attachEvent监听的事件前边的加上“on”,比如“onclick”和“onmouseover”,addEventListener与之相反。
* listener          要绑定的事件监听函数 
*/

const addEvent = function({element, type, callback}) {
    if (element.addEventListener) { // 支持使用 addEventListener()
        if (type.slice(0,2) === "on") // 以 "on" 开头,不需要,则去掉
            type = type.slice(2);
        element.addEventListener(type, callback);
    } else if (element.attachEvent) { // 支持使用 attachEvent()
        if (type.slice(0, 2) !== "on") // 没有以 "on" 开头,需要,则加上
            type = "on" + type;
        element.attachEvent(type, callback);
    }else{
        type.slice(0, 2) !== "on" ? element['on'+ type] = callback : element[type] = callback;
    }   
}
export default addEvent;

其他js引入

import addEvent from "@/public/js/addEvent"   
addEvent({
    element: window, 
    type: 'scroll', 
    callback: debounce(buriedPoint, 1000)  // or buriedPoint
  }); //滚动事件