|
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