2013-03-01 108 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