Skip to content

Instantly share code, notes, and snippets.

@ashwell
Last active May 5, 2016 03:46
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ashwell/71b7490fe23b938e1ade to your computer and use it in GitHub Desktop.
Save ashwell/71b7490fe23b938e1ade to your computer and use it in GitHub Desktop.
Cross platform event creation (ES6)
'use strict';
var
tmpEvent,
createEvent,
createWithConstructor,
createWithInit;
createWithConstructor = function( name, descriptor ) {
return new CustomEvent( name, descriptor );
};
createWithInit = function( name, descriptor={} ) {
var
event = document.createEvent( "CustomEvent" ),
{
bubbles,
cancelable,
detail
} = descriptor;
event.initCustomEvent(
name,
typeof bubbles === "boolean" ? bubbles : true,
typeof cancelable === "boolean" ? cancelable : true,
detail || {}
);
return event;
};
// check if supported via try/catch
if ( window ) {
try {
tmpEvent = new CustomEvent( "test" );
createEvent = createWithConstructor;
} catch ( error ) {
// use fallback method
createEvent = createWithInit;
}
}
// ES6 export
export default createEvent;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment