Tabs: Force ajax tabs to resolve asynchronously to avoid a bug caused by cached XHRs resolving immediately in IE.

This commit is contained in:
Scott González
2011-10-10 15:34:47 -04:00
parent 8961508128
commit fa26847f91
2 changed files with 21 additions and 12 deletions

View File

@@ -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 ) {

30
ui/jquery.ui.tabs.js vendored
View File

@@ -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;
}
});
});
}