2013-03-01 12 views
5

Używam Local Storage przekazać wartości pomiędzy stronami w celu stworzenia efektu przewijania (użytkownik kliknie link i przewinie do konkretnej części strony w oparciu o ID)PhoneGap - lokalne przechowywanie nie działa - Android

Wcześniej używałem ciasteczek, ale to nie działało na Androida, czytałem, że lokalna pamięć była obsługiwana, więc przełączona na to. Działa całkiem dobrze, gdy jest w przeglądarce, ale jak tylko zostanie spakowany jako natywna aplikacja, tracę całą funkcjonalność? API stwierdza, że ​​powinno być wspierane, wszelkie pomysły?

Tu jest mój kodu: URL

Podstawa:

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

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

Kod działa poprawnie w przeglądarce prostu nie natywnie, jakieś pomysły?

Dzięki,

Odpowiedz

2

Zastosowanie document.addEventListener ("deviceready" onDeviceReady, false) zamiast $ (function() {...}

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

+0

Gotowy teraz dziękuję, usunąłem aplikację z mojego urządzenia, a następnie ponownie uruchomić kod i teraz wszystko działa, mam jednak teraz problemy z używaniem localStorage razem z iScroll, wydaje się, że mogę mieć jeden lub inne, a nie obie .. jakieś pomysły ktokolwiek? – woolm110

1

1.Glad poznać rozwiąż swój pierwszy problem. Według gmh04 myślę, że powinieneś zamienić swoje zdarzenie init na "deviceready", które jest wyzwalane, gdy aplikacja zaczyna działać.

2. Masz na myśli powrót window.localStorage.getItem ("klucz") null w Odbierający adres URL? Nie napotykam na problem, który opisujesz. Możesz jednak spróbować przenieść swój kod w trakcie odbierania adresu URL na tę samą stronę podstawowego adresu URL. Próbowałem razy i jestem pewien, że localStorage będzie działał na tej samej stronie.

+0

Wygląda na to, że getItem działa poprawnie z wartością przekazywaną, co wydaje się nie być animacją i przewijaniem do lokalizacji na stronie, która pasuje do identyfikatora wartości. – woolm110

Powiązane problemy