2013-03-01 22 views
5

Ich verwende Local Storage Werte zwischen den Seiten zu führen, um eine Rolle zu Effekt (Benutzer klickt Link und gescrollt zu bestimmtem Teil der Seite basierend auf ID)Phonegap - Lokale Speicherung funktioniert nicht - Android

zu erstellen

Ich habe früher Cookies verwendet, aber das schien nicht auf Android zu funktionieren, ich habe gelesen, dass lokaler Speicher unterstützt wurde, also darauf umgeschaltet. Im Browser funktioniert es ganz gut, aber sobald es als native App verpackt ist, verliere ich alle Funktionen? Die API besagt, dass es unterstützt werden sollte, irgendwelche Ideen?

Hier ist mein Code:

Basis-URL:

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"); 
}); 

Empfangen von 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"); 
     }, 
    }); 
    } 
}); 

Der Code im Browser funktioniert gut nativ einfach nicht, irgendwelche Ideen?

Danke,

Antwort

2

Verwenden document.addEventListener ("deviceready", onDeviceReady, false) statt $ (function() {...}

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

+0

Hab's jetzt funktioniert Danke, ich habe die App von meinem Gerät gelöscht und dann den Code neu laufen lassen und es klappt jetzt alles, ich habe aber jetzt Probleme mit LocalStorage zusammen mit iScroll, es scheint ich kann einen haben oder den andere und nicht beide .. irgendwelche Ideen, jemand? – woolm110

1

1.Glad Sie wissen löse dein erstes Problem, wie gmh04, ich denke, du solltest dein init-Ereignis durch "deviceready" ersetzen, das ausgelöst wird, wenn die App gestartet wird.

2. Du meinst window.localStorage.getItem ("key") return null in empfangener URL? Ich stoße nicht genau auf ein Problem als was du beschreibst. Sie können jedoch versuchen, den Code, der die URL empfängt, auf dieselbe Seite der Basis-URL zu verschieben. Ich habe mal versucht und bin mir sehr sicher, dass die localStorage auf der gleichen Seite funktionieren wird.

+0

Das getItem scheint mit dem übergebenen Wert in Ordnung zu sein. Es scheint nicht zu funktionieren, animieren und scrollen zu dem Ort auf der Seite, der mit der ID des Wertes übereinstimmt. – woolm110

1

würde Ich mag hinzufügen, dass es ein Fehler auf der 2.6.0-Version von cordova.js die localstorage machen funktioniert nicht auf Android:

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

Auf der 2.5.0 Version es funktioniert perfekt , und es ist bereits auf der 2.7.0 rc behoben.

Verwandte Themen