Tengo una aplicación de lista de contactos jQuery Mobile simple. Ofrece a los usuarios una opción para agregarlo a su pantalla de inicio. Cuando lo hacen, hacer clic en un número de teléfono para iniciar una llamada y abrir la aplicación nuevamente los coloca en la primera página de la aplicación. Para evitar este comportamiento, añadí lo siguiente:¿Cómo almacenar en caché y conservar la última página visitada en una aplicación jQuery Mobile, cuando se vuelve a abrir desde la pantalla de inicio del iPhone?
$(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);
});
});
Sin embargo, cuando los usuarios vuelve a la aplicación, el caché de páginas se pierde y todos los datos de esa página, que normalmente debe permanecer abierta, se re-loaded desde el servidor (vea $ .mobile.changePage (storedPage)). hay alguna forma de prevenir esto? ¿Hay alguna forma elegante de lograr el mismo efecto? ¿Debería simplemente almacenar HTML de página activa en localStorage también? Si es así, ¿cómo lo reactiva?
Gracias por la ayuda.
editar: Quizás no fui lo suficientemente claro. Ya puedo almacenar datos en localStorage. Usar cookies para almacenar pedazos de HTML que se transferirían al servidor en cada solicitud sería simplemente ridículo, por lo que yo sé. Mi pregunta no es acerca de cómo almacenar datos. Lo que realmente estoy preguntando es, simplemente almacenando $ (". Active-page-class"). Html() y volviendo a ponerlo en la página cuando no está allí, quiero imitar un caché del lado del cliente que el iPhone no hace proporcionar aplicaciones móviles jQuery basadas en ajax. Se trata de jQuery Mobile para las aplicaciones a las que se accede a través de iPhone homescreen, como ya lo indican las etiquetas y la pregunta.
¿no puede almacenar los datos en esa página también y volver a procesarlos? – ghostCoder
Si solo presiono el HTML de la página dentro del cuerpo y agrego la clase de página activa a él, entonces los controladores de eventos no se adjuntarán. $ .mobile.changePage maneja eso (teniendo en cuenta que su elemento de página está insertado antes y tiene la misma url de datos que la url a la que está navegando) pero estropea el HTML (no cuando la página se carga desde el servidor, de lo contrario jQuery móvil no habría funcionado en absoluto) –
Al estar basado en la web, las cookies deberían ser una opción. –