diff options
author | Scott González <scott.gonzalez@gmail.com> | 2011-11-01 16:35:49 -0400 |
---|---|---|
committer | Scott González <scott.gonzalez@gmail.com> | 2011-11-01 16:35:49 -0400 |
commit | 183d6a00df531b13c638944796b5bc52ca19ecb4 (patch) | |
tree | 8594fc45d885f749d436295b6eae08dc03e8b874 | |
parent | 63d1cbc7ab8b65405afe32e577fc90a0265d11cb (diff) | |
download | jquery-ui-183d6a00df531b13c638944796b5bc52ca19ecb4.tar.gz jquery-ui-183d6a00df531b13c638944796b5bc52ca19ecb4.zip |
Tests (Simulate): Make the blur event async to deal with IE's native blur being async.
-rw-r--r-- | tests/jquery.simulate.js | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/tests/jquery.simulate.js b/tests/jquery.simulate.js index c1d28f982..adc340049 100644 --- a/tests/jquery.simulate.js +++ b/tests/jquery.simulate.js @@ -194,18 +194,23 @@ $.extend( $.simulate.prototype, { element.bind( "blur", trigger ); element[ 0 ].blur(); - // Some versions of IE don't actually .blur() on an element - so we focus the body - if ( element[ 0 ].ownerDocument.activeElement === element[ 0 ] ) { - element[ 0 ].ownerDocument.body.focus(); - } + // blur events are async in IE + setTimeout(function() { + // IE won't let the blur occur if the window is inactive + if ( element[ 0 ].ownerDocument.activeElement === element[ 0 ] ) { + element[ 0 ].ownerDocument.body.focus(); + } - if ( !triggered ) { - focusoutEvent = $.Event( "focusout" ); - focusoutEvent.preventDefault(); - element.trigger( focusoutEvent ); - element.triggerHandler( "blur" ); - } - element.unbind( "blur", trigger ); + // Firefox won't trigger events if the window is inactive + // IE doesn't trigger events if we had to manually focus the body + if ( !triggered ) { + focusoutEvent = $.Event( "focusout" ); + focusoutEvent.preventDefault(); + element.trigger( focusoutEvent ); + element.triggerHandler( "blur" ); + } + element.unbind( "blur", trigger ); + }, 1 ); } }); |