Commit 9aa553aa authored by Dave Methvin's avatar Dave Methvin Committed by timmywil

Rework #1486 patch to avoid `try/catch` and look for hidden elements by...

Rework #1486 patch to avoid `try/catch` and look for hidden elements by `.offsetWidth`. Unit test currently disabled due to Chrome bug.
parent ecd10464
...@@ -387,23 +387,21 @@ jQuery.event = { ...@@ -387,23 +387,21 @@ jQuery.event = {
// Call a native DOM method on the target with the same name name as the 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. // Can't use an .isFunction)() check here because IE6/7 fails that test.
// IE<9 dies on focus to hidden element (#1486), may want to revisit a try/catch. // IE<9 dies on focus to hidden element (#1486)
try { if ( ontype && elem[ type ] && elem.offsetWidth !== 0 ) {
if ( ontype && elem[ type ] ) { // Don't re-trigger an onFOO event when we call its FOO() method
// Don't re-trigger an onFOO event when we call its FOO() method old = elem[ ontype ];
old = elem[ ontype ];
if ( old ) {
elem[ ontype ] = null;
}
jQuery.event.triggered = type; if ( old ) {
elem[ type ](); elem[ ontype ] = null;
} }
} catch ( ieError ) {}
if ( old ) { jQuery.event.triggered = type;
elem[ ontype ] = old; elem[ type ]();
if ( old ) {
elem[ ontype ] = old;
}
} }
jQuery.event.triggered = undefined; jQuery.event.triggered = undefined;
......
...@@ -34,6 +34,31 @@ test("bind(),live(),delegate() with non-null,defined data", function() { ...@@ -34,6 +34,31 @@ test("bind(),live(),delegate() with non-null,defined data", function() {
}); });
/*
Removed because Chrome 13 snaps/crashes on this 2011-09-07
test("Handler changes and .trigger() order", function() {
expect(1);
var markup = jQuery(
'<div><p><b class="a">b</b></p></div>'
).appendTo( "body" );
var path = "";
jQuery( "b" ).parents().bind( "click", function(e){
path += this.nodeName.toLowerCase() + " ";
// Should not change the event triggering order
$(this).parent().remove();
});
markup.find( "b" ).trigger( "click" );
equals( path, "p div body html ", "Delivered all events" )
markup.remove();
});
*/
test("bind(), with data", function() { test("bind(), with data", function() {
expect(4); expect(4);
var handler = function(event) { var handler = function(event) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment