From: Scott González Date: Tue, 1 Nov 2011 20:35:49 +0000 (-0400) Subject: Tests (Simulate): Make the blur event async to deal with IE's native blur being async. X-Git-Tag: 1.9m7~164 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=183d6a00df531b13c638944796b5bc52ca19ecb4;p=jquery-ui.git Tests (Simulate): Make the blur event async to deal with IE's native blur being async. --- 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 ); } });