2013-03-01 16 views
5

sto usando Archiviazione locale per passare i valori tra le pagine in modo da creare un effetto di scorrimento per (utente fa clic di collegamento e viene fatto scorrere a parte specifica della pagina basata su ID)PhoneGap - memorizzazione locale non funziona - Android

Stavo già usando i cookie ma non sembra funzionare su Android, ho letto che l'archiviazione locale è stata supportata e quindi convertita in quella. Funziona completamente bene nel browser ma non appena viene compresso come app nativa, perdo tutte le funzionalità? L'API afferma che dovrebbe essere supportato, qualche idea?

Ecco il mio codice: URL

Base:

var storage = window.localStorage; 
$("a.scroll_link").click(function(event) { 
    event.preventDefault(); 
    var value = $(this).attr("id"); 

     storage.setItem("key",value); 

    console.log(value); 

    window.location=$(this).attr("href"); 
}); 

Ricezione URL:

$(function() { 

var value = window.localStorage.getItem("key"); 

if (value != "" && value != "undefined" && value != null) { 
    var storage = window.localStorage; 
    storage.setItem("key",value); 
    var scroll_type = ""; 

    if ($.browser.webkit) { 
     scroll_type = "body"; 
    } else { 
     scroll_type = "html"; 
    } 

    $(scroll_type) 
     .stop() 
     .animate({ 
     //get top-position of target-element and set it as scroll target 
     scrollTop: ($("#" + value).offset().top - 25) 
     //scrolldelay: 1.5 seconds 
    }, { 
     duration: 1500, 
     complete: function() { 
      storage.removeItem("key"); 
     }, 
    }); 
    } 
}); 

Il codice funziona bene nel browser semplicemente non nativamente, tutte le idee?

Grazie,

risposta

2

Usa document.addEventListener ("deviceready", onDeviceReady, falso) invece di $ (function() {...}

http://docs.phonegap.com/en/2.5.0/cordova_events_events.md.html#deviceready

+0

Funziona ora grazie, ho cancellato l'app dal mio dispositivo e poi rieseguo il codice e ora funziona tutto, ma ora sto avendo problemi con l'uso di localStorage insieme a iScroll, sembra che possa averne uno o il altro e non entrambi ... qualche idea a qualcuno? – woolm110

1

1.Glad di conoscerti come gmh04, penso che dovresti sostituire il tuo evento init con 'deviceready' che viene attivato all'avvio dell'app.

2. Intendi window.localStorage.getItem ("chiave") ritorno null nell'URL di ricezione? Non incontro esattamente un problema come quello che descrivi. Tuttavia, puoi provare a spostare il codice nella ricezione dell'URL nella stessa pagina dell'URL di base. Ho provato per ore e sono molto sicuro che localStorage funzionerà nella stessa pagina.

+0

Il getItem sembra funzionare correttamente con il valore che viene passato, ciò che non sembra fare è animare e scorrere fino alla posizione sulla pagina che corrisponde all'ID del valore. – woolm110

1

vorrei aggiungere che c'è un bug della versione 2.6.0 di cordova.js che rendono localStorage non funzionano su Android:

https://issues.apache.org/jira/browse/CB-3063

Nella versione 2.5.0 funziona perfettamente , ed è già risolvibile su 2.7.0 rc.

Problemi correlati