71 lines
1.2 KiB
JavaScript
71 lines
1.2 KiB
JavaScript
/*global define*/
|
||
define(
|
||
function()
|
||
{
|
||
// http://stackoverflow.com/a/2381862/229189
|
||
function triggerEvent( node, event_name )
|
||
{
|
||
var doc;
|
||
|
||
if ( node.ownerDocument )
|
||
{
|
||
doc = node.ownerDocument;
|
||
}
|
||
|
||
else if ( node.nodeType === 9 )
|
||
{
|
||
doc = node;
|
||
}
|
||
|
||
else
|
||
{
|
||
throw new Error('Invalid node passed to fireEvent: ' + node.id);
|
||
}
|
||
|
||
if ( node.fireEvent )
|
||
{
|
||
// IE-style
|
||
var event = doc.createEventObject();
|
||
|
||
event.synthetic = true;
|
||
|
||
node.fireEvent( 'on' + event_name, event );
|
||
}
|
||
|
||
else if ( node.dispatchEvent )
|
||
{
|
||
var event_class = '';
|
||
|
||
switch ( event_name )
|
||
{
|
||
case 'click':
|
||
case 'mousedown':
|
||
case 'mouseup':
|
||
event_class = 'MouseEvents';
|
||
break;
|
||
|
||
case 'focus':
|
||
case 'change':
|
||
case 'blur':
|
||
case 'select':
|
||
event_class = 'HTMLEvents';
|
||
break;
|
||
|
||
default:
|
||
throw 'triggerEvent: Couldn’t find an event class for event ' + event_name + '.';
|
||
break;
|
||
}
|
||
|
||
var event = doc.createEvent( event_class );
|
||
var bubbles = event_name == 'change' ? false : true;
|
||
|
||
event.initEvent( event_name, bubbles, true );
|
||
|
||
event.synthetic = true;
|
||
node.dispatchEvent( event );
|
||
}
|
||
}
|
||
|
||
return triggerEvent;
|
||
}
|
||
); |