Я работаю над приложением PhoneGap, которое использует jQuery Mobile (jQM). Это приложение имеет области, которые потребуют аутентификации пользователя. Поэтому я использую jQM pagebeforechange
, чтобы определить, нужно ли пользователю проходить аутентификацию перед просмотром запрошенной страницы. Если это так, я отправляю их на страницу входа.
Я хочу, чтобы страница входа в систему не отслеживалась в истории jQM. То есть, если пользователю предоставляется страница входа в систему, но он решает нажать «отмена», я хочу, чтобы приложение вернулось на предыдущую страницу, и у нет есть «следующая» страница в истории; «предыдущая страница» будет на вершине стека истории.
Вот как я обрабатываю перенаправление страницы входа в систему:
$(document).bind('pagebeforechange', function(e, data) {
if (typeof data.toPage !== 'string') {
return;
}
if (data.toPage.match(/someRestrictedPage/)) {
data.options.transition = "pop";
data.options.changeHash = false;
data.toPage = "myLogin.html";
}
});
Для кнопки отмены моей страницы входа я делаю:
$loginCancelButton.bind('click', function() {
var prevPage = $.mobile.urlHistory.getPrev();
if (typeof prevPage !== 'undefined') {
$.mobile.changePage(prevPage.url, {
changeHash: false,
reverse: true,
transition: "pop"
});
}
});
Однако, когда я делаю это, я получаю $.mobile.urlHistory.stack
с тремя элементами:
[ {"index"}, {"login"}, {"index"} ]
Как мне управлять перехватом изменений страницы, чтобы при необходимости перенаправлять их на форму входа в систему, но не создавать «недействительную» историю навигации?