Fix for #1486. Prevent IE from throwing an error when triggering focus on hidden...
authorBrandon Aaron <brandon.aaron@gmail.com>
Sat, 8 Dec 2007 02:54:09 +0000 (02:54 +0000)
committerBrandon Aaron <brandon.aaron@gmail.com>
Sat, 8 Dec 2007 02:54:09 +0000 (02:54 +0000)
src/event.js
test/unit/event.js

index f71a1df..f7a6cb9 100644 (file)
@@ -193,7 +193,10 @@ jQuery.event = {
                        // Trigger the native events (except for clicks on links)
                        if ( fn && donative !== false && val !== false && !(jQuery.nodeName(element, 'a') && type == "click") ) {
                                this.triggered = true;
-                               element[ type ]();
+                               try {
+                                       element[ type ]();
+                               // prevent IE from throwing an error for some hidden elements
+                               } catch (e) {}
                        }
 
                        this.triggered = false;
index e27530e..d0897e4 100644 (file)
@@ -121,7 +121,7 @@ test("unbind(event)", function() {
 });
 
 test("trigger(event, [data], [fn])", function() {
-       expect(66);
+       expect(67);
 
        var handler = function(event, a, b, c) {
                equals( event.type, "click", "check passed data" );
@@ -193,6 +193,16 @@ test("trigger(event, [data], [fn])", function() {
        // Trigger only the handlers (no native) and extra fn, with external event obj
        // Triggers 9
        equals( $("#firstp").triggerHandler("click", [eventObj, 1, "2", "abc"], handler), "test", "Verify handler response" );
+       
+       var pass = true;
+       try {
+               $('input:first')
+                       .hide()
+                       .trigger('focus');
+       } catch(e) {
+               pass = false;
+       }
+       ok( pass, "Trigger focus on hidden element" );
 
        // have the extra handler override the return
        // Triggers 9