一年前,我们为 Windows 7 操作系统开发了一款基于 Phonegap 的混合应用程序,并且在商店中有售。 Windows 8 手机发布后,我们在 Windows Phone 8 中试用了该应用程序。该应用程序在这个新操作系统中运行良好,因为它基于 Web,除了 HTML5 本地存储。
在该应用程序中,我们在应用程序首次启动时将用户登录详细信息存储在浏览器本地存储中,下次启动时,Web 端业务逻辑将访问它并用于在后台登录。这在 Windows 7 手机中工作得很好。然而,在 Windows 8 手机(诺基亚 Lumia 620、820)中,每次关闭或强制停止应用程序时,此本地存储都会被删除(请注意:在 session 中,存储会保留。仅在下次启动时不可用)。
为了确定问题的原因,我在 Windows Phone 8 SDK 中创建了一个简单的 html5 应用程序并检查了本地存储保存/读取选项。我可以保存值并在 session 中读取它,但是当退出并再次打开时,这些值就消失了。然而,相同的 html5 页面在相同的 Windows 8 手机中的 IE10 中工作正常(即)值被存储并且可以在我下次访问该 URL 时访问。
下面给出示例 HTML5 页面代码[我尝试了两种在本地存储中存储值的方法:localStorage.key = value & localStorage.setItem(key,value)。第二次,我注释了保存命令并替换为读取命令。那次我得到的结果分别为“null”和“undefined”]
请告诉我如何在 Windows 8 Phone 中永久保留浏览器本地存储。这是客户要求,感谢您的快速支持。
提前致谢。
本地存储支持检查 - HTML 5 页面代码
<!DOCTYPE html>
<html>
<body>
<div id="fname"></div>
<div id="lname"></div>
<script>
var outputElem1 = document.getElementById("fname");
var outputElem2 = document.getElementById("lname");
if( typeof( window.localStorage) !== "undefined" )
{
localStorage.firstname = "John";
outputElem1.innerHTML="First name: " + localStorage.firstname;
localStorage.setItem( 'lastname', "Smith" );
outputElem2.innerHTML="Last name: " + localStorage.getItem('lastname');
}
else
{
outputElem1.innerHTML="Sorry, your device does not support web storage...";
}
</script>
</body>
</html>
最佳答案
这行不通
alert(localStorage.firstname);
根据PhoneGap API Documentation你需要使用
alert(localStorage.getItem("firstname"))
它也不会在您的 Windows Phone 7 应用程序中工作。
关于下次启动 Windows Phone 8 应用程序时不会保留 html5 本地存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18431402/