19

我正在尝试通过以下代码学习如何使用 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:/// 所以我正在使用 mongoose 来提供它。当我单击保存按钮时,Chrome 的 JavaScript 控制台中的结果对我来说是正确的。但是,当我按下刷新时,本地存储和会话存储都会被清除,而我期望本地存储值会持续存在。这发生在http://127.0.0.1/和上http://localhost/

有谁知道为什么会发生这种情况?在设置,内容设置中,我选择了“允许设置本地数据(推荐)”并取消选中“阻止第三方 cookie 和站点数据”。我的代码中是否缺少某些内容?

(Chrome 版本 23.0.1271.64 m)

4

2 回答 2

13

行。感谢必须在这个上去 pimvdb,但这是解决方案。

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function saveStuff() {
    sessionStorage.setItem('sessionKey', 'sessionValue');
    localStorage.setItem('localKey', 'localValue');
}
localStorage.getItem('localKey');
sessionStorage.getItem('sessionKey');
</script>
</head>
<body>
<button type="button" onclick="saveStuff()">Save</button>
</body>
</html>

摘要似乎是您必须尝试读取密钥才能持久保存它。

结论:WTF。

于 2012-11-08T16:24:10.510 回答
11

<!-- Necro post I know, but maybe it helps someone else -->

我不明白为什么我localStorage在开发工具中看不到某些东西,但在控制台中输入localStorage. 好吧,如果您在打开开发工具的情况下存储某些内容,您将不会看到Application -> Local Storage为您的主机列出的任何内容。当我关闭/重新打开开发工具时,我可以看到我的数据。

因此,总而言之,关闭/重新打开开发工具。

于 2017-05-31T14:59:09.153 回答