|
832 | 832 | return;
|
833 | 833 | }
|
834 | 834 |
|
| 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 | + |
835 | 862 | // Set the isPageTransitioning flag to prevent any requests from
|
836 | 863 | // entering this method while we are in the midst of loading a page
|
837 | 864 | // or transitioning.
|
838 | 865 |
|
839 | 866 | isPageTransitioning = true;
|
840 | 867 |
|
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 |
| - |
846 | 868 | // If the caller passed us a url, call loadPage()
|
847 | 869 | // to make sure it is loaded into the DOM. We'll listen
|
848 | 870 | // to the promise object it returns so we know when
|
|
863 | 885 |
|
864 | 886 | //release transition lock so navigation is free again
|
865 | 887 | releasePageTransitionLock();
|
866 |
| - settings.pageContainer.trigger("changepagefailed"); |
| 888 | + settings.pageContainer.trigger( "pagechangefailed", triggerData ); |
| 889 | + settings.pageContainer.trigger( "changepagefailed", triggerData ); // XXX: DEPRECATED for 1.0 |
867 | 890 | });
|
868 | 891 | return;
|
869 | 892 | }
|
870 | 893 |
|
871 | 894 | // The caller passed us a real page DOM element. Update our
|
872 | 895 | // 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" ), |
876 | 898 | // The pageUrl var is usually the same as url, except when url is obscured as a dialog url. pageUrl always contains the file path
|
877 | 899 | pageUrl = url,
|
878 | 900 | fileUrl = path.getFilePath( url ),
|
|
882 | 904 | pageTitle = document.title,
|
883 | 905 | isDialog = settings.role === "dialog" || toPage.jqmData( "role" ) === "dialog";
|
884 | 906 |
|
885 |
| - // Let listeners know we're about to change the current page. |
886 |
| - mpc.trigger( "beforechangepage" ); |
887 |
| - |
888 | 907 | // If we are trying to transition to the same page that we are currently on ignore the request.
|
889 | 908 | // an illegal same page request is defined by the current page being the same as the url, as long as there's history
|
890 | 909 | // and toPage is not an array or object (those are allowed to be "same")
|
|
893 | 912 | // to the same page.
|
894 | 913 | if( fromPage && fromPage[0] === toPage[0] ) {
|
895 | 914 | isPageTransitioning = false;
|
896 |
| - mpc.trigger( "changepage" ); |
| 915 | + mpc.trigger( "pagechange", triggerData ); |
| 916 | + mpc.trigger( "changepage", triggerData ); // XXX: DEPRECATED for 1.0 |
897 | 917 | return;
|
898 | 918 | }
|
899 | 919 |
|
|
980 | 1000 | releasePageTransitionLock();
|
981 | 1001 |
|
982 | 1002 | // 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 |
984 | 1006 | });
|
985 | 1007 | };
|
986 | 1008 |
|
|
992 | 1014 | role: undefined, // By default we rely on the role defined by the @data-role attribute.
|
993 | 1015 | duplicateCachedPage: undefined,
|
994 | 1016 | 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 |
996 | 1020 | };
|
997 | 1021 |
|
998 | 1022 | /* Event Bindings - hashchange, submit, and click */
|
|
0 commit comments