# 20190925 ![js](https://img.shields.io/badge/language-js-orange.svg) * 给任意元素添加监听器封装函数 ```js function addEventListener(ele,type,fn) { if(ele.addEventListener) { ele.addEventListener(type,fn,false) } else if (ele.attachEvent) { ele.attachEvent('on' + type, fn) } else { ele['on' + type] = fn } } ``` * 给任意事件解绑监听器封装函数 ```js //如需解绑监听器,则添加事件必须为命名函数 function removeEventListener(ele, type, fn) { if(ele.removeEventListener) { ele.removeEVentListener(type, fn, false) } else if (ele.detachEvent) { ele.detachEvent('on' + type, fn) } else { ele['on' + type] = fn } } ``` * 阻止事件冒泡 ```js //e | window.event :事件参数对象,前者是w3c,后者IE //google,ie8 | firefox不支持 //火狐不支持 window.event window.event.cancelBubble = true; e.cancelBubble = true; //w3c firefox,google | ie8不支持 e.stopPropagation(); ```