From ed7aae1d1c683ca86dc6408d1caec9d4e7baa2a4 Mon Sep 17 00:00:00 2001 From: scottjehl Date: Wed, 15 Jun 2011 20:15:28 -0400 Subject: [PATCH] hide address bar during page changes by catching ajax clicks early through binding to touchend, and make pages fit screen height during transitions --- js/jquery.mobile.navigation.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/js/jquery.mobile.navigation.js b/js/jquery.mobile.navigation.js index a3926d81..dd902749 100644 --- a/js/jquery.mobile.navigation.js +++ b/js/jquery.mobile.navigation.js @@ -385,20 +385,26 @@ //function for transitioning between two existing pages function transitionPages( toPage, fromPage, transition, reverse ) { - $.mobile.silentScroll(); + //get current scroll distance - var currScroll = $window.scrollTop(); + var currScroll = $window.scrollTop(), + toScroll = toPage.data( "lastScroll" ) || 0; + + $.mobile.silentScroll(); if( fromPage ) { //set as data for returning to that spot fromPage + .height( screen.height ) .jqmData( "lastScroll", currScroll ) .jqmData( "lastClicked", $activeClickedLink ); //trigger before show/hide events fromPage.data( "page" )._trigger( "beforehide", null, { nextPage: toPage } ); } - toPage.data( "page" )._trigger( "beforeshow", null, { prevPage: fromPage || $( "" ) } ); + toPage + .height( toScroll ) + .data( "page" )._trigger( "beforeshow", null, { prevPage: fromPage || $( "" ) } ); //clear page loader $.mobile.hidePageLoadingMsg(); @@ -416,10 +422,10 @@ //trigger show/hide events if( fromPage ) { - fromPage.data( "page" )._trigger( "hide", null, { nextPage: toPage } ); + fromPage.width("").height("").data( "page" )._trigger( "hide", null, { nextPage: toPage } ); } //trigger pageshow, define prevPage as either fromPage or empty jQuery obj - toPage.data( "page" )._trigger( "show", null, { prevPage: fromPage || $( "" ) } ); + toPage.width("").height("").data( "page" )._trigger( "show", null, { prevPage: fromPage || $( "" ) } ); }); @@ -952,9 +958,8 @@ } }); - //click routing - direct to HTTP or Ajax, accordingly - $( document ).bind( "click", function( event ) { + $( document ).bind( "vclick click", function( event ) { var link = findClosestLink( event.target ); if ( !link ) { return;