Phonegap – 本地存储无法运行 – Android

我正在使用本地存储在页面之间传递值以创建滚动效果(用户单击链接并根据ID滚动到页面的特定部分)

我之前使用的是cookie,但这似乎不适用于Android,我读到本地存储支持,所以切换到那。 它在浏览器中完全正常,但只要打包为本机应用程序,我就失去了所有function? API声明它应该得到支持,任何想法?

这是我的代码:

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

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

代码在浏览器中工作正常,不是本机的,任何想法?

谢谢,

使用document.addEventListener(“deviceready”,onDeviceReady,false)代替$(function(){…}

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

很高兴知道你解决了第一个问题。 正如gmh04所说,我认为你应该用’deviceready’替换你的init事件,这是在app开始运行时触发的。

你的意思是window.localStorage.getItem(“key”)在接收URL中返回null? 我并没有像你描述的那样遇到问题。 但是,您可能会尝试将接收url中的代码移动到基本url的同一页面。 我已经尝试过几次并且非常确定localStorage将在同一页面中工作。

我想补充一点是,使用localStorage的2.6版本的cordova.js上有一个错误:

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

在2.5.0版本上它运行良好,它已经修复了2.7.0 rc。