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:/// で常に機能するとは限らないことを認識しているため、マングースを使用して提供しています。保存ボタンをクリックすると、Chrome の JavaScript コンソールで正しい結果が表示されます。ただし、更新を押すと、ローカルストレージの値が保持されると予想していた場所で、ローカルストレージとセッションストレージの両方がクリアされます。これは と の両方http://127.0.0.1/で発生しhttp://localhost/ます。

なぜこれが起こっているのか誰にも分かりますか?[設定] の [コンテンツ設定] で [ローカル データの設定を許可する (推奨)] を選択し、[サードパーティの Cookie とサイト データをブロックする] のチェックを外しました。コードに何か不足していますか?

(Chrome バージョン 23.0.1271.64 m)

4

2 に答える 2

13

Ok。これについては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 に答える