Skip to content

Commit 2dc2553

Browse files
committed
Merge remote branch 'origin/master'
2 parents fb1c8be + 04623c2 commit 2dc2553

File tree

1 file changed

+39
-15
lines changed

1 file changed

+39
-15
lines changed

js/jquery.mobile.navigation.js

100644100755
Lines changed: 39 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -832,17 +832,39 @@
832832
return;
833833
}
834834

835+
var settings = $.extend( {}, $.mobile.changePage.defaults, options );
836+
837+
// Make sure we have a pageContainer to work with.
838+
settings.pageContainer = settings.pageContainer || $.mobile.pageContainer;
839+
840+
// Make sure we have a fromPage.
841+
settings.fromPage = settings.fromPage || $.mobile.activePage;
842+
843+
var mpc = settings.pageContainer,
844+
pbcEvent = new $.Event( "pagebeforechange" ),
845+
triggerData = { toPage: toPage, options: settings };
846+
847+
// Let listeners know we're about to change the current page.
848+
mpc.trigger( pbcEvent, triggerData );
849+
850+
mpc.trigger( "beforechangepage", triggerData ); // XXX: DEPRECATED for 1.0
851+
852+
// If the default behavior is prevented, stop here!
853+
if( pbcEvent.isDefaultPrevented() ){
854+
return;
855+
}
856+
857+
// We allow "pagebeforechange" observers to modify the toPage in the trigger
858+
// data to allow for redirects. Make sure our toPage is updated.
859+
860+
toPage = triggerData.toPage;
861+
835862
// Set the isPageTransitioning flag to prevent any requests from
836863
// entering this method while we are in the midst of loading a page
837864
// or transitioning.
838865

839866
isPageTransitioning = true;
840867

841-
var settings = $.extend( {}, $.mobile.changePage.defaults, options );
842-
843-
// Make sure we have a pageContainer to work with.
844-
settings.pageContainer = settings.pageContainer || $.mobile.pageContainer;
845-
846868
// If the caller passed us a url, call loadPage()
847869
// to make sure it is loaded into the DOM. We'll listen
848870
// to the promise object it returns so we know when
@@ -863,16 +885,16 @@
863885

864886
//release transition lock so navigation is free again
865887
releasePageTransitionLock();
866-
settings.pageContainer.trigger("changepagefailed");
888+
settings.pageContainer.trigger( "pagechangefailed", triggerData );
889+
settings.pageContainer.trigger( "changepagefailed", triggerData ); // XXX: DEPRECATED for 1.0
867890
});
868891
return;
869892
}
870893

871894
// The caller passed us a real page DOM element. Update our
872895
// internal state and then trigger a transition to the page.
873-
var mpc = settings.pageContainer,
874-
fromPage = $.mobile.activePage,
875-
url = toPage.jqmData( "url" ),
896+
var fromPage = settings.fromPage,
897+
url = ( settings.dataUrl && path.convertUrlToDataUrl( settings.dataUrl ) ) || toPage.jqmData( "url" ),
876898
// The pageUrl var is usually the same as url, except when url is obscured as a dialog url. pageUrl always contains the file path
877899
pageUrl = url,
878900
fileUrl = path.getFilePath( url ),
@@ -882,9 +904,6 @@
882904
pageTitle = document.title,
883905
isDialog = settings.role === "dialog" || toPage.jqmData( "role" ) === "dialog";
884906

885-
// Let listeners know we're about to change the current page.
886-
mpc.trigger( "beforechangepage" );
887-
888907
// If we are trying to transition to the same page that we are currently on ignore the request.
889908
// an illegal same page request is defined by the current page being the same as the url, as long as there's history
890909
// and toPage is not an array or object (those are allowed to be "same")
@@ -893,7 +912,8 @@
893912
// to the same page.
894913
if( fromPage && fromPage[0] === toPage[0] ) {
895914
isPageTransitioning = false;
896-
mpc.trigger( "changepage" );
915+
mpc.trigger( "pagechange", triggerData );
916+
mpc.trigger( "changepage", triggerData ); // XXX: DEPRECATED for 1.0
897917
return;
898918
}
899919

@@ -980,7 +1000,9 @@
9801000
releasePageTransitionLock();
9811001

9821002
// Let listeners know we're all done changing the current page.
983-
mpc.trigger( "changepage" );
1003+
mpc.trigger( "pagechange", triggerData );
1004+
1005+
mpc.trigger( "changepage", triggerData ); // XXX: DEPRECATED for 1.0
9841006
});
9851007
};
9861008

@@ -992,7 +1014,9 @@
9921014
role: undefined, // By default we rely on the role defined by the @data-role attribute.
9931015
duplicateCachedPage: undefined,
9941016
pageContainer: undefined,
995-
showLoadMsg: true //loading message shows by default when pages are being fetched during changePage
1017+
showLoadMsg: true, //loading message shows by default when pages are being fetched during changePage
1018+
dataUrl: undefined,
1019+
fromPage: undefined
9961020
};
9971021

9981022
/* Event Bindings - hashchange, submit, and click */

0 commit comments

Comments
 (0)