Last active
August 29, 2015 14:20
-
-
Save ronnyhaase/d705f9c71e71df831480 to your computer and use it in GitHub Desktop.
Firing / Toggling DOM events natively
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
function toggleEvent(element, event, bubbles, cancelable) { | |
var evType, | |
ev; | |
if ( bubbles !== false ) bubbles = true; | |
if ( cancelable !== false ) cancelable = true; | |
// Good browser | |
if ( element.dispatchEvent !== undefined ) { | |
evType = typeof Event; | |
// Awesome browser (Chrome 15+, Firefox 11+, Opera 11.60+) | |
if (evType === 'function') { | |
return element.dispatchEvent(new Event(event, {bubbles:bubbles, cancelable:cancellable})); | |
// Just good (Safari, mobile browsers?) | |
} else { | |
ev = document.createEvent('HTMLEvents'); | |
ev.initEvent(event, bubbles, cancellable); | |
return element.dispatchEvent(ev); | |
} | |
// Evil browser (ALL IEs) | |
} else { | |
ev = document.createEventObject(); | |
return element.fireEvent('on' + event, ev); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Yes, this is the painful truth, even for newer browsers.
https://developer.mozilla.org/en-US/docs/Web/API/Event/Event#Browser_compatibility