Skip to content

Commit fa26847

Browse files
committed
Tabs: Force ajax tabs to resolve asynchronously to avoid a bug caused by cached XHRs resolving immediately in IE.
1 parent 8961508 commit fa26847

File tree

2 files changed

+21
-12
lines changed

2 files changed

+21
-12
lines changed

tests/unit/tabs/tabs_events.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,8 @@ test( "beforeLoad", function() {
206206
});
207207
element.find( ".ui-tabs-nav a" ).eq( 3 ).click();
208208
tabs_state( element, 0, 0, 0, 1, 0 );
209-
equals( panel.html(), "<p>testing</p>", "panel html after" );
209+
// .toLowerCase() is needed to convert <P> to <p> in old IEs
210+
equals( panel.html().toLowerCase(), "<p>testing</p>", "panel html after" );
210211
});
211212

212213
if ( $.uiBackCompat === false ) {

ui/jquery.ui.tabs.js

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -541,19 +541,27 @@ $.widget( "ui.tabs", {
541541

542542
this.xhr
543543
.success(function( response ) {
544-
panel.html( response );
545-
self._trigger( "load", event, eventData );
544+
// TODO: IE resolves cached XHRs immediately
545+
// remove when core #10467 is fixed
546+
setTimeout(function() {
547+
panel.html( response );
548+
self._trigger( "load", event, eventData );
549+
}, 1 );
546550
})
547551
.complete(function( jqXHR, status ) {
548-
if ( status === "abort" ) {
549-
self.panels.stop( false, true );
550-
}
551-
552-
self.lis.eq( index ).removeClass( "ui-tabs-loading" );
553-
554-
if ( jqXHR === self.xhr ) {
555-
delete self.xhr;
556-
}
552+
// TODO: IE resolves cached XHRs immediately
553+
// remove when core #10467 is fixed
554+
setTimeout(function() {
555+
if ( status === "abort" ) {
556+
self.panels.stop( false, true );
557+
}
558+
559+
self.lis.eq( index ).removeClass( "ui-tabs-loading" );
560+
561+
if ( jqXHR === self.xhr ) {
562+
delete self.xhr;
563+
}
564+
});
557565
});
558566
}
559567

0 commit comments

Comments
 (0)