]> source.dussan.org Git - jquery.git/commitdiff
Fixes #12518, removes an offsetWidth on focus/blur events for an <IE9 bug that caused...
authorMerrifield, Jay <jmerrifiel@gannett.com>
Mon, 15 Oct 2012 15:54:32 +0000 (11:54 -0400)
committerMike Sherov <mike.sherov@gmail.com>
Sat, 20 Oct 2012 18:00:30 +0000 (14:00 -0400)
src/event.js

index f3335a074b691330bea52115f1eb59223e4c6ac3..330310fc804fab2cc3652df30a499d1df3d9e525 100644 (file)
@@ -327,8 +327,7 @@ jQuery.event = {
                                // Call a native DOM method on the target with the same name name as the event.
                                // Can't use an .isFunction() check here because IE6/7 fails that test.
                                // Don't do default actions on window, that's where global variables be (#6170)
-                               // IE<9 dies on focus/blur to hidden element (#1486)
-                               if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) {
+                               if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) {
 
                                        // Don't re-trigger an onFOO event when we call its FOO() method
                                        old = elem[ ontype ];
@@ -339,7 +338,12 @@ jQuery.event = {
 
                                        // Prevent re-triggering of the same event, since we already bubbled it above
                                        jQuery.event.triggered = type;
-                                       elem[ type ]();
+                                       try {
+                                               elem[ type ]();
+                                       } catch ( e ) {
+                                               // IE<9 dies on focus/blur to hidden element (#1486,#12518)
+                                               // only reproducible on winXP IE8 native, not IE9 in IE8 mode
+                                       }
                                        jQuery.event.triggered = undefined;
 
                                        if ( old ) {