Skip to content
Permalink
Browse files

Tabs: Force ajax tabs to resolve asynchronously to avoid a bug caused…

… by cached XHRs resolving immediately in IE.
  • Loading branch information...
scottgonzalez committed Oct 10, 2011
1 parent 8961508 commit fa26847f910ec32bf59fe6dc839e81e5dfce8247
Showing with 21 additions and 12 deletions.
  1. +2 −1 tests/unit/tabs/tabs_events.js
  2. +19 −11 ui/jquery.ui.tabs.js
@@ -206,7 +206,8 @@ test( "beforeLoad", function() {
});
element.find( ".ui-tabs-nav a" ).eq( 3 ).click();
tabs_state( element, 0, 0, 0, 1, 0 );
equals( panel.html(), "<p>testing</p>", "panel html after" );
// .toLowerCase() is needed to convert <P> to <p> in old IEs
equals( panel.html().toLowerCase(), "<p>testing</p>", "panel html after" );
});

if ( $.uiBackCompat === false ) {
@@ -541,19 +541,27 @@ $.widget( "ui.tabs", {

this.xhr
.success(function( response ) {
panel.html( response );
self._trigger( "load", event, eventData );
// TODO: IE resolves cached XHRs immediately
// remove when core #10467 is fixed
setTimeout(function() {
panel.html( response );
self._trigger( "load", event, eventData );
}, 1 );
})
.complete(function( jqXHR, status ) {
if ( status === "abort" ) {
self.panels.stop( false, true );
}

self.lis.eq( index ).removeClass( "ui-tabs-loading" );

if ( jqXHR === self.xhr ) {
delete self.xhr;
}
// TODO: IE resolves cached XHRs immediately
// remove when core #10467 is fixed
setTimeout(function() {
if ( status === "abort" ) {
self.panels.stop( false, true );
}

self.lis.eq( index ).removeClass( "ui-tabs-loading" );

if ( jqXHR === self.xhr ) {
delete self.xhr;
}
});
});
}

0 comments on commit fa26847

Please sign in to comment.
You can’t perform that action at this time.