-
-
Save jhonsore/1bce4b670d2ab743fbe7f1d91e8247c4 to your computer and use it in GitHub Desktop.
a cross-browser implementation of addEventListener/AttachEvent without external dependencies
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Cross Browser helper to addEventListener. | |
* | |
* @param {HTMLElement} obj The Element to attach event to. | |
* @param {string} evt The event that will trigger the binded function. | |
* @param {function(event)} fnc The function to bind to the element. | |
* @return {boolean} true if it was successfuly binded. | |
*/ | |
var cb_addEventListener = function(obj, evt, fnc) { | |
// W3C model | |
if (obj.addEventListener) { | |
obj.addEventListener(evt, fnc, false); | |
return true; | |
} | |
// Microsoft model | |
else if (obj.attachEvent) { | |
return obj.attachEvent('on' + evt, fnc); | |
} | |
// Browser don't support W3C or MSFT model, go on with traditional | |
else { | |
evt = 'on'+evt; | |
if(typeof obj[evt] === 'function'){ | |
// Object already has a function on traditional | |
// Let's wrap it with our own function inside another function | |
fnc = (function(f1,f2){ | |
return function(){ | |
f1.apply(this,arguments); | |
f2.apply(this,arguments); | |
} | |
})(obj[evt], fnc); | |
} | |
obj[evt] = fnc; | |
return true; | |
} | |
return false; | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment