Skip to content

Instantly share code, notes, and snippets.

@ranaroussi
Created October 10, 2013 08:52
Show Gist options
  • Save ranaroussi/6915211 to your computer and use it in GitHub Desktop.
Save ranaroussi/6915211 to your computer and use it in GitHub Desktop.
cross browser addEventListener
// as prototype
Object.prototype.bindEvent = function(event, callback, bubble) {
var elem = this,
addListener = elem.addEventListener || elem.attachEvent,
removeListener = elem.removeEventListener || elem.detachEvent,
eventName;
// custom "event" for ready
if (event === 'ready') {
eventName = document.addEventListener ? "DOMContentLoaded" : "onreadystatechange";
} else {
eventName = document.addEventListener ? event : "on"+event;
}
// document.ready specific
if (elem === document && event === 'ready') {
if (document.readyState === "complete" || document.readyState === "loaded") {
callback();
return;
}
}
bubble = bubble || false;
addListener.call(elem, eventName, function(event){
// remove listner in document.ready
if (elem === document && event === 'ready') {
removeListener(eventName, arguments.callee, bubble);
}
callback();
}, bubble);
};
// document.ready example
document.bindEvent('ready', function(){
alert('moo');
});
// click example
document.getElementById('test').bindEvent('click', function(){
alert('moo');
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment