Skip to content

Commit 65ad2f9

Browse files
author
Gabriel Schulhof
committed
Navigation: resetActivePageHeight() on pageshow but wait for window.load
This fixes the problem whereby header and footer heights are miscalculated when showing the initial page, because during the initial page load, pageshow happens before window.load, meaning that the CSS may not yet be loaded, affecting header and footer heights. Re jquery-archivegh-7134
1 parent 6dcea68 commit 65ad2f9

File tree

1 file changed

+20
-1
lines changed

1 file changed

+20
-1
lines changed

js/jquery.mobile.navigation.js

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ define( [
2222

2323
// resolved on domready
2424
var domreadyDeferred = $.Deferred(),
25+
26+
// resolved and nulled on window.load()
27+
loadDeferred = $.Deferred(),
2528
documentUrl = $.mobile.path.documentUrl,
2629

2730
// used to track last vclicked element to make sure its value is added to form data
@@ -423,13 +426,29 @@ define( [
423426
$.mobile.pageContainer.pagecontainer();
424427

425428
//set page min-heights to be device specific
426-
$.mobile.document.bind( "pageshow", $.mobile.resetActivePageHeight );
429+
$.mobile.document.bind( "pageshow", function() {
430+
431+
// We need to wait for window.load to make sure that styles have already been rendered,
432+
// otherwise heights of external toolbars will have the wrong value
433+
if ( loadDeferred ) {
434+
loadDeferred.done( $.mobile.resetActivePageHeight );
435+
} else {
436+
$.mobile.resetActivePageHeight();
437+
}
438+
});
427439
$.mobile.window.bind( "throttledresize", $.mobile.resetActivePageHeight );
428440

429441
};//navreadyDeferred done callback
430442

431443
$( function() { domreadyDeferred.resolve(); } );
432444

445+
$.mobile.window.load( function() {
446+
447+
// Resolve and null the deferred
448+
loadDeferred.resolve();
449+
loadDeferred = null;
450+
});
451+
433452
$.when( domreadyDeferred, $.mobile.navreadyDeferred ).done( function() { $.mobile._registerInternalEvents(); } );
434453
})( jQuery );
435454
//>>excludeStart("jqmBuildExclude", pragmas.jqmBuildExclude);

0 commit comments

Comments
 (0)