2013-03-01 187 views
5

我使用本地存儲在頁面之間傳遞值以創建滾動效果(用戶單擊鏈接並根據ID滾動到頁面的特定部分)Phonegap - 本地存儲不工作 - Android

我之前使用的是cookies,但似乎沒有在Android上工作,我讀到本地存儲支持如此切換到。它在瀏覽器中工作得很好,但只要它作爲本機應用程序打包,我就失去了所有功能? API聲明應該支持,有什麼想法?

這裏是我的代碼:

基地網址:

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

接收網址:

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

的代碼在瀏覽器工作正常,只是不原生地,任何想法?

感謝,

回答

2

使用document.addEventListener( 「deviceready」,onDeviceReady,假的),而不是$(函數(){...}

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

+0

得到它現在的工作,謝謝,我從我的設備中刪除應用程序,然後重新運行代碼,現在所有的作品,不過,我現在不得不與使用本地存儲與iScroll在一起的問題,看來我可以有一個或其他,而不是兩個..任何想法任何人? – woolm110 2013-03-01 15:09:34

1

1.Glad認識你解決你的第一個問題,因爲gmh04說,我認爲你應該用'deviceready'替換你的init事件,這是在應用程序開始運行時觸發的

2. 你的意思是window.localStorage.getItem(「key」)return接收URL中爲空? 我並不完全遇到你所描述的問題。但是,您可能會嘗試將接收網址中的代碼移至基本網址的相同頁面。我已經嘗試了很多次,並且非常肯定localStorage將在同一頁面中工作。

+0

getItem似乎可以正常工作,並且傳遞的值正確,但它似乎沒有做的是動畫和滾動到頁面上與該值的ID相匹配的位置。 – woolm110 2013-03-04 11:26:14