2011-11-09 11 views
12

El sitio se utiliza en Samsung Galaxy Tab con el sistema operativo Gingerbread. Los navegadores utilizados hasta ahora son el navegador de stock y Dolphin HD. Los elementos en el almacenamiento local parecen desaparecer aleatoriamente cuando los usuarios entran y salen de la cobertura de la red. El almacenamiento también parece no ser capaz de sobrevivir completamente a los bloqueos del navegador o reinicios del dispositivo. La parte extraña es que el almacenamiento no suele desaparecer por completo, solo falta una gran cantidad de elementos. ¿Alguien más ha escuchado sobre este problema o tiene alguna sugerencia?Almacenamiento local HTML5 no persistente

Editar: Por el almacenamiento local que quiero decir,

localStorage["Key"] = value; 

retrived usando:

localStorage.getItem("Key"); 

En todos los casos, directamente después de la adición de almacenamiento local, el sitio es capaz de recuperar y utilizar los datos . Sin embargo, en algún momento después de esto generalmente después de roaming o bloqueos de navegador/tableta, los datos ya no están allí. Todo lo que he encontrado dice que el almacenamiento local debería persistir, así que no sé a dónde ir desde aquí.

+2

Sugerencia: Mostrar un código relevante para que otros puedan verificarlo. –

+0

Las últimas generaciones de navegadores móviles tienden a borrar el almacenamiento local al mismo tiempo que se borran las cookies. ¿Podría ser eso lo que está pasando? –

+1

Sólo una pregunta general. Elementos agregados por localStorage ["Key"] = valores que están allí durante el uso del sitio de repente ya no están allí en momentos aleatorios. Generalmente después de roaming o después de un bloqueo del navegador. Solo he podido replicarlo una vez, pero varios usuarios por día se topan con él y causa un gran problema cuando sucede. Solo me pregunto si este es un problema conocido y si otros métodos de almacenamiento fuera de línea HTML5 son más confiables. – jmease

Respuesta

3

¿Qué hay de depuración esto un poco más? Tal vez su propio código de alguna manera lo sobrescribe? estoy usando localStorage/sessionStorage en PhoneGap y nunca tuvieron que desaparezcan ...

Agregue el controlador de eventos siguiente:

window.addEventListener("storage", function(e) { 
    console.debug(e); 
}, false); 

cual se disparará (y conectarse a la consola, el navegador de escritorio) cada vez que el se accede al almacenamiento También puede registrar información más detallada para que aparezca en su logcat adb (como la tecla a la que se accede!)

Para más información sobre eventos de almacenamiento, consulte this stackoverflow question.

+0

Gracias Leon. Es mi culpa por no actualizar la publicación. Intenté agregar un oyente de eventos. Los usuarios solo usan el sitio en dispositivos móviles, por lo que no hay una consola para escribir. Y dado que el oyente no activa ningún evento de esa página, no se ha demostrado que sea útil. Descubrí una forma de conseguir que el oyente disparara en todo el sitio, pero involucraba ventanas emergentes y es más de lo que quiero que pasen mis usuarios. – jmease

+0

hay algunas buenas utilidades de registro de jscript, como [log4javascript] (http://log4javascript.org/index.html) que le permiten también iniciar sesión en un servidor (es decir, [AjaxAppender] (http://log4javascript.org/docs) /manual.html#ajaxappender)) que podría ser de ayuda para depurar problemas móviles como estos ... Espero que esto ayude – Leon

Cuestiones relacionadas