UNPKG

add-event-listener

Version:
67 lines (49 loc) 1.57 kB
'use strict' addEventListener.removeEventListener = removeEventListener addEventListener.addEventListener = addEventListener module.exports = addEventListener // detect passive events var passive = false try { var opts = Object.defineProperty({}, 'passive', { get: function() { passive = true } }) window.addEventListener('test', null, opts) window.removeEventListener('test', null, opts) } catch(e) { passive = false } var Events = null function addEventListener(el, eventName, listener, useCapture) { Events = Events || ( document.addEventListener ? {add: stdAttach, rm: stdDetach} : {add: oldIEAttach, rm: oldIEDetach} ) return Events.add(el, eventName, listener, useCapture) } function removeEventListener(el, eventName, listener, useCapture) { Events = Events || ( document.addEventListener ? {add: stdAttach, rm: stdDetach} : {add: oldIEAttach, rm: oldIEDetach} ) return Events.rm(el, eventName, listener, useCapture) } function stdAttach(el, eventName, listener, useCapture) { el.addEventListener(eventName, listener, passive ? useCapture : !!useCapture) } function stdDetach(el, eventName, listener, useCapture) { el.removeEventListener(eventName, listener, passive ? useCapture : !!useCapture) } function oldIEAttach(el, eventName, listener, useCapture) { if(useCapture) { throw new Error('cannot useCapture in oldIE') } el.attachEvent('on' + eventName, listener) } function oldIEDetach(el, eventName, listener, useCapture) { el.detachEvent('on' + eventName, listener) }