У меня есть простое приложение со списком контактов jQuery Mobile. Он предлагает пользователям возможность добавить их на свой домашний экран. Когда они это сделают, щелкнув номер телефона, чтобы начать разговор, и открытие приложения снова помещает их на первую страницу приложения. Чтобы предотвратить это поведение, я добавил следующее:
$(function () {
//if I am at the start page
if ($.mobile.activePage.attr('data-url') === '/') {
var storedPage = localStorage.getItem('jqmPage');
//and I have a stored link
if (storedPage !== null) {
//change the page to the stored link
$.mobile.changePage(storedPage);
}
}
$(document).bind('pagecreate', function (e) {
var url = !!e
? $(e.target).attr("data-url")
: location.pathname + location.search;
//there can be dialog pages - we don't want to return to them
if (url.indexOf('/') !== 0) {
return;
}
localStorage.setItem('jqmPage', url);
});
});
Однако, когда пользователи возвращаются к приложению, кеш страницы теряется, и все данные на этой странице, которые обычно должны оставаться открытыми, перезагружаются с сервера (см. $.mobile.changePage(storedPage))., Есть ли способ предотвратить это? Есть ли также элегантный способ достижения такого же эффекта? Должен ли я просто хранить активную HTML-страницу на localStorage? Если да, то как его активировать?
Спасибо за помощь.
изменить: Возможно, я был недостаточно ясен. Я уже могу хранить данные на localStorage. Насколько я могу сказать, использование файлов cookie для хранения фрагментов HTML, которые будут переданы на сервер по каждому запросу, будет просто смешно. Мой вопрос не в том, как хранить данные. Я действительно спрашиваю, просто сохраняя $( ". Active-page-class" ). Html() и вернув его на страницу, когда его там нет, я хочу подражать кешированию на стороне клиента, который iPhone не предоставлять на мобильных устройствах jQuery на основе ajax. Это касается jQuery Mobile для приложений, к которым осуществляется доступ через домашний экран iPhone, поскольку теги и вопрос уже заявлены.