aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott González <scott.gonzalez@gmail.com>2011-10-10 15:34:47 -0400
committerScott González <scott.gonzalez@gmail.com>2011-10-10 15:34:47 -0400
commitfa26847f910ec32bf59fe6dc839e81e5dfce8247 (patch)
tree1a7df8f1f295eabaccaedf64e42189e93f0e6029
parent8961508128b01331942630d7f47b0428608c5b01 (diff)
downloadjquery-ui-fa26847f910ec32bf59fe6dc839e81e5dfce8247.tar.gz
jquery-ui-fa26847f910ec32bf59fe6dc839e81e5dfce8247.zip
Tabs: Force ajax tabs to resolve asynchronously to avoid a bug caused by cached XHRs resolving immediately in IE.
-rw-r--r--tests/unit/tabs/tabs_events.js3
-rw-r--r--ui/jquery.ui.tabs.js30
2 files changed, 21 insertions, 12 deletions
diff --git a/tests/unit/tabs/tabs_events.js b/tests/unit/tabs/tabs_events.js
index 12c9bb87b..f5cde180b 100644
--- a/tests/unit/tabs/tabs_events.js
+++ b/tests/unit/tabs/tabs_events.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 ) {
diff --git a/ui/jquery.ui.tabs.js b/ui/jquery.ui.tabs.js
index a1bf72cb1..4127ddf84 100644
--- a/ui/jquery.ui.tabs.js
+++ b/ui/jquery.ui.tabs.js
@@ -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;
+ }
+ });
});
}