Я реализую переопределение для кнопки «Назад» в 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 сделал, - это переместить страницу в начало стека.1011 *
Есть мысли?Я думал, что мне, вероятно, придется расширить методы changePage и | или addNew.