diff --git a/platforms/android/assets/www/index.html b/platforms/android/assets/www/index.html index 02c8a65..30c5935 100644 --- a/platforms/android/assets/www/index.html +++ b/platforms/android/assets/www/index.html @@ -73,10 +73,19 @@ diff --git a/platforms/android/assets/www/js/index.js b/platforms/android/assets/www/js/index.js index 3fbd9c1..c399ca8 100644 --- a/platforms/android/assets/www/js/index.js +++ b/platforms/android/assets/www/js/index.js @@ -19,6 +19,8 @@ var ANIMATION_OUT_CLASS = 'pt-page-moveToLeftEasing pt-page-ontop'; var ANIMATION_IN_CLASS = 'pt-page-moveFromRight'; +var ANIMATION_BACK_OUT_CLASS = 'pt-page-moveToRightEasing pt-page-ontop'; +var ANIMATION_BACK_IN_CLASS = 'pt-page-moveFromLeft'; var extend = function ( defaults, options ) { var extended = {}; @@ -45,10 +47,12 @@ var app = { 'contact': 'contact@cadoles.com' }, - current : 0, - isAnimating: false, - endCurrPage: false, - endNextPage: false, + current : 0, + isAnimating : false, + endCurrPage : false, + endNextPage : false, + hashHistory : [window.location.hash], + historyLength : window.history.length, // Application Constructor initialize: function() { @@ -164,7 +168,7 @@ var app = { } }, - navigate: function(page){ + navigate: function(page, back){ var page_obj = app.pages[page]; @@ -192,22 +196,22 @@ var app = { $outpage.removeEventListener('MSAnimationEnd', outCb); app.endCurrPage = true; if(app.endNextPage){ - app.onAnimationEnd($outpage, $inpage); + app.onAnimationEnd($outpage, $inpage, back); } }; var inCb = function(){ - $inpage.removeEventListener('animationend', inCb); + $inpage.removeEventListener('animationend', inCb); $inpage.removeEventListener('webkitAnimationEnd', inCb); $inpage.removeEventListener('oAnimationEnd', inCb); $inpage.removeEventListener('MSAnimationEnd', inCb); app.endNextPage = true; if(app.endCurrPage){ - app.onAnimationEnd($outpage, $inpage); + app.onAnimationEnd($outpage, $inpage, back); } }; - var out_classes = ANIMATION_OUT_CLASS.split(' '); + var out_classes = (back ? ANIMATION_BACK_OUT_CLASS : ANIMATION_OUT_CLASS).split(' '); for(var i = 0; i < out_classes.length; i++) $outpage.classList.add(out_classes[i]); $outpage.addEventListener('animationend', outCb, false); @@ -217,7 +221,7 @@ var app = { $inpage.classList.add('momo-page-current'); - var in_classes = ANIMATION_IN_CLASS.split(' '); + var in_classes = (back ? ANIMATION_BACK_IN_CLASS : ANIMATION_IN_CLASS).split(' '); for(var i = 0; i < in_classes.length; i++) $inpage.classList.add(in_classes[i]); $inpage.addEventListener('animationend', inCb, false); @@ -228,15 +232,15 @@ var app = { app.current_page = page; }, - onAnimationEnd: function($outpage, $inpage) { + onAnimationEnd: function($outpage, $inpage, back) { app.endCurrPage = false; app.endNextPage = false; - var out_classes = ANIMATION_OUT_CLASS.split(' '); + var out_classes = (back ? ANIMATION_BACK_OUT_CLASS : ANIMATION_OUT_CLASS).split(' '); for(var i = 0; i < out_classes.length; i++) $outpage.classList.remove(out_classes[i]); if($outpage != $inpage) $outpage.classList.remove('momo-page-current'); - var in_classes = ANIMATION_IN_CLASS.split(' '); + var in_classes = (back ? ANIMATION_BACK_IN_CLASS : ANIMATION_IN_CLASS).split(' '); for(var i = 0; i < in_classes.length; i++) $inpage.classList.remove(in_classes[i]); app.isAnimating = false; @@ -247,13 +251,31 @@ var app = { window.addEventListener('hashchange', this.onHashChange, false); }, + onHashChange: function(e) { + var hash = window.location.hash, length = window.history.length; var page = window.location.hash.slice(1); + var back = page == 'home'; + + if (app.hashHistory.length && app.historyLength == length) { + if (app.hashHistory[app.hashHistory.length - 2] == hash) { + app.hashHistory = app.hashHistory.slice(0, -1); + back = true; + } else { + app.hashHistory.push(hash); + } + } else { + app.hashHistory.push(hash); + app.historyLength = length; + } + if(!app.pages.hasOwnProperty(page)){ page = 'home'; } - //if(app.current_page != page) - app.navigate(page); + + if(app.current_page != page){ + app.navigate(page, back); + } }, onDeviceReady: function() { diff --git a/www/js/index.js b/www/js/index.js index ad67323..c399ca8 100644 --- a/www/js/index.js +++ b/www/js/index.js @@ -253,9 +253,9 @@ var app = { onHashChange: function(e) { - var back = false; var hash = window.location.hash, length = window.history.length; var page = window.location.hash.slice(1); + var back = page == 'home'; if (app.hashHistory.length && app.historyLength == length) { if (app.hashHistory[app.hashHistory.length - 2] == hash) {