正如您所注意到的,您需要设置$.mobile.pushStateEnabled = false,但是要能够替换 JQM 的内置导航支持还有很多。
我在http://jsfiddle.net/kiliman/4dkP8/ 和http://systemex.net/jqm/pathjs/ 创建了一个启用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();
});
希望这会有所帮助。