var bind, unbind, prefix; function detect () { bind = window.addEventListener ? 'addEventListener' : 'attachEvent'; unbind = window.removeEventListener ? 'removeEventListener' : 'detachEvent'; prefix = bind !== 'addEventListener' ? 'on' : ''; } /** * Bind `el` event `type` to `fn`. * * @param {Element} el * @param {String} type * @param {Function} fn * @param {Boolean} capture * @return {Function} * @api public */ exports.bind = function(el, type, fn, capture){ if (!bind) detect(); el[bind](prefix + type, fn, capture || false); return fn; }; /** * Unbind `el` event `type`'s callback `fn`. * * @param {Element} el * @param {String} type * @param {Function} fn * @param {Boolean} capture * @return {Function} * @api public */ exports.unbind = function(el, type, fn, capture){ if (!unbind) detect(); el[unbind](prefix + type, fn, capture || false); return fn; };