Как вы заметили, вам нужно установить $.mobile.pushStateEnabled = false
, но есть гораздо больше возможностей заменить встроенную поддержку навигации JQM.
Я создал полный пример для включения поддержки PathJSздесь http://jsfiddle.net/kiliman/4dkP8/ и живая версия здесь http://systemex.net/jqm/pathjs/, чтобы вы могли видеть, как выглядят URL-адреса.Вы даже можете пометить галочкой ссылку на хэш, и она перейдет на правильную страницу.
Сначала вам нужно отключить поддержку хеша по умолчанию в JQM
$(document).bind('mobileinit', function() {
// disable autoInit so we can navigate to bookmarked hash url
$.mobile.autoInitializePage = false;
// let PathJS handle navigation
$.mobile.ajaxEnabled = false;
$.mobile.hashListeningEnabled = false;
$.mobile.pushStateEnabled = false;
$(document).bind('pagebeforechange', function(e, data) {
var to = data.toPage;
if (typeof to === 'string') {
var u = $.mobile.path.parseUrl(to);
to = u.hash || '#' + u.pathname;
// manually set hash so PathJS will be triggered
location.hash = to;
// prevent JQM from handling navigation
e.preventDefault();
}
});
});
Затем создайте маршруты PathJS.В этом примере я просто перемещаюсь к существующим страницам, но вы можете динамически генерировать страницы на основе текущего хэша.Убедитесь, что вы указали следующие параметры: dataUrl
и changeHash
.
Path.map('#/store/movies/star-wars').to(function() {
// setup options: update dataUrl and prevent JQM from changing hash
var options = {
dataUrl: location.toString(),
changeHash: false
};
// navigate to page object
$.mobile.changePage($('#movies-star-wars'), options);
});
Path.map('#/store/books/authors/tolkien').to(function() {
var options = {
dataUrl: location.toString(),
changeHash: false
};
$.mobile.changePage($('#books-authors-tolkien'), options);
});
Path.map('').to(function() {
var options = {
dataUrl: '',
changeHash: false
};
$.mobile.changePage($('#home'), options);
});
Path.root('');
Наконец, вам нужно инициализировать страницу, а затем запустить PathJS.
$(function() {
// initialize page
$.mobile.initializePage();
// startup PathJS
Path.listen();
});
Надеюсь, что этопомогает.