2011-11-09 13 views
12

Sito utilizzato su Samsung Galaxy Tab con il sistema operativo Gingerbread. I browser utilizzati finora sono il browser di serie e Dolphin HD. Gli elementi nella memoria locale sembrano scomparire casualmente quando gli utenti entrano ed escono dalla copertura della rete. Lo storage sembra non essere in grado di sopravvivere completamente ai crash del browser o al riavvio del dispositivo. La parte strana è che la memoria di solito non si cancella completamente, manca solo un gran numero di elementi. Qualcun altro ha sentito parlare di questo problema o ha qualche suggerimento?HTML5 Archiviazione locale non persistente

Edit: Con storage locale intendo,

localStorage["Key"] = value; 

retrived utilizzando:

localStorage.getItem("Key"); 

In ogni caso, subito dopo l'aggiunta di storage locale, il sito è in grado di recuperare e utilizzare i dati . Tuttavia, a volte dopo questo di solito dopo il roaming o il browser/tablet si blocca, i dati non ci sono più. Tutto quello che ho trovato dice che la memoria locale dovrebbe persistere, quindi non so davvero dove andare da qui.

+2

Suggerimento: mostrare codice rilevante, in modo che altri possano verificarlo. –

+0

Le ultime generazioni di browser per dispositivi mobili tendono a cancellare la memoria locale nello stesso momento in cui i cookie vengono cancellati. Potrebbe essere quello che sta succedendo? –

+1

Solo una domanda generale. Elementi aggiunti da localStorage ["Chiave"] = i valori che sono presenti durante l'uso del sito non sono più presenti in momenti casuali. Di solito dopo il roaming o dopo un arresto anomalo del browser. Sono stato in grado di replicarlo solo una volta, ma molti utenti al giorno ci sono dentro e causa un bel problema quando succede. Mi chiedo solo se questo è un problema noto e se altri metodi di archiviazione offline HTML5 sono più affidabili? – jmease

risposta

3

Che ne dici di eseguire il debug un po 'oltre? Forse il tuo codice in qualche modo lo sta sovrascrivendo? Sto usando localStorage/sessionStorage in PhoneGap e mai avuto li scomparendo ...

Aggiungere il seguente gestore di eventi:

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

Quale sarà il fuoco (e accedere a consolare, il browser desktop) ogni volta che il accesso alla memoria. È anche possibile accedere a informazioni più dettagliate per essere visualizzate nel tuo adb logcat (come la chiave a cui si accede!)

Dai un'occhiata a this stackoverflow question per maggiori dettagli sugli eventi di archiviazione.

+0

Grazie Leon. È colpa mia se non ho aggiornato il post. Ho provato ad aggiungere un listener di eventi. Gli utenti utilizzano il sito solo su dispositivi mobili, quindi non c'è nessuna console su cui scrivere. E poiché l'ascoltatore non attiva alcun evento da quella pagina, non è dimostrato utile. Ho trovato un modo per far sì che l'ascoltatore sparasse a tutto il sito, ma riguardava i popup ed è più di quanto voglia far passare i miei utenti. – jmease

+0

ci sono alcune utilissime utility per la registrazione di jscript - come [log4javascript] (http://log4javascript.org/index.html) che ti permettono anche di accedere ad un server (ad es. [AjaxAppender] (http://log4javascript.org/docs /manual.html#ajaxappender)) che potrebbe essere di aiuto nel debug di problemi mobili come questi ... Spero che questo aiuti – Leon

Problemi correlati