我正在jquery mobile中实现对后退按钮的覆盖。 因此,如果访问以树的叶子为目标的书签,我可以正确处理返回树。
在这种情况下,后退按钮不会执行任何操作,因为$.mobile.urlHistory.stack
仅包含当前页面。
我打算做的是将changePage改为我编程确定的页面是当前页面的父页面。
目前我正在尝试覆盖基本的后退按钮行为
$('a[data-rel="back"]').live('tap',handleBackButton).live('click',handleBackButton)
function handleBackButton(e) {
var currenturl = $.mobile.activePage.data('url');
var backurl = backUrlFromTree(currenturl);
// handle back tree navigation ourselves
// if we're still trying to go back but there's nowhere to go
if($.mobile.urlHistory.activeIndex === 0) {
e.preventDefault();
e.stopImmediatePropagation();
console.log('no history to navigate');
console.log('going back to ' + url);
$.mobile.changePage(url, {
transition: "slide",
reverse: true
});
$.mobile.urlHistory.clearForward();
}
}
这里的问题是changePage
调用urlHistory.addNew
将页面推送到堆栈导致错误地排序历史记录,我真正想要addNew做的是将页面移到前面的叠加。
有什么想法?我以为我可能需要扩展changePage和|或addNew方法。