【发布时间】:2012-10-28 20:50:02
【问题描述】:
我正在尝试通过以下代码学习如何使用 localStorage js 对象。
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function saveStuff() {
sessionStorage.setItem('sessionKey', 'sessionValue');
localStorage.setItem('localKey', 'localValue');
}
</script>
</head>
<body>
<button type="button" onclick="saveStuff()">Save</button>
</body>
</html>
我知道这并不总是适用于 file:/// 所以我使用猫鼬来提供它。当我单击保存按钮时,Chrome 的 JavaScript 控制台中的结果对我来说是正确的。但是,当我按下刷新时,本地存储和会话存储都会被清除,而我期望本地存储值会持续存在。这发生在http://127.0.0.1/ 和http://localhost/ 上。
有谁知道为什么会发生这种情况?在设置,内容设置中,我选择了“允许设置本地数据(推荐)”并取消选中“阻止第三方 cookie 和站点数据”。我的代码中是否缺少某些内容?
(Chrome 版本 23.0.1271.64 m)
【问题讨论】:
-
这个小提琴有用吗? jsfiddle.net/6bvjD当你点击“保存”然后重新加载页面时,我确实获得了存储的值。
-
好吧。是的,它确实。这意味着为了使保存的值持续存在,必须尝试读取它?这对我来说毫无意义。
-
你确定你没有打电话给
localStorage.clear()或localStorage.removeItem吗? -
100%。在下面的答案中使用确切的页面会产生我预期的行为:当我重新加载页面时,两个变量仍然存在,而当我关闭并重新打开时,只有 local 仍然存在。 Bizzaro @ chrome,但感谢您的帮助!
-
我可以在 chrome 42.0.2311.135 m 上确认问题。 setItem("X","V") 之前的 localstorage.getItem("X") 允许在杀死所有 chrome 进程后检索值。如果 setItem("X","V") 发生在 getItem("X") 工作之前,只要您不终止所有 chrome 进程:在所有 chrome 进程终止后,本地存储密钥“X”丢失..
标签: javascript google-chrome local-storage