2012-11-08 4 views
15

次のコードでlocalStorage jsオブジェクトを使用する方法を学習しようとしています。なぜlocalStorageはChromeに永続しないのですか?

<!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> 

私は、これは常にファイルでは動作しません承知しています:///ので、私はそれを提供するためにマングースを使用しています。保存ボタンをクリックすると、ChromeのJavaScriptコンソールで結果が正しく表示されます。しかし、リフレッシュを押すと、ローカルストレージとセッションストレージの両方がクリアされ、ローカルストレージの値が維持されることが予想されます。これはhttp://127.0.0.1/http://localhost/の両方で発生します。

これはなぜ起こっているのでしょうか?設定では、コンテンツ設定「ローカルデータを設定する(推奨)」を選択し、「サードパーティのCookieとサイトデータをブロックする」を選択しました。私のコードで何かが欠けていますか?

(Chromeバージョン23.0.1271.64 m)

+0

このフィドルは機能しますか? http://jsfiddle.net/6bvjD/「保存」をクリックしてページをリロードすると、保存された値が取得されます。 – pimvdb

+0

Well wtf。はい、そうです。保存された値を維持するためには、それを読み取ろうとする必要がありますか?それは私には意味がありません。 –

+0

'localStorage.clear()'または 'localStorage.removeItem'を呼び出していませんか? – pimvdb

答えて

11

ありがとう、これは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。

+0

これはバグだと思う。発生した[#160056](http://code.google.com/p/chromium/issues/detail?id=160056) –

+1

これはDevToolsのバグのようです。実際に 'localStorage'または任意のプロパティにアクセスするまで、ストレージエントリはResourcesパネルに表示されません。ページロード時に 'localStorage;'を実行するだけでDevToolsはうまく動作します。 – pimvdb

+1

console.logに値を表示していますが、依然として持続しません。 (クロム) –

8

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

私はlocalStorageでの開発ツールで何かを見ることができなかった理由を把握することができませんでしたが、localStorageを入力すると、コンソールでそれを見ることができました。 Dev Toolsを開いて何かを保存すると、Application -> Local Storageにあなたのホスト用のものが何も表示されません。私はDev Toolsを閉じたり再オープンしたりして、私のデータを見ることができました。

結論として、Dev Toolsを閉じて、再度開いてください。

+1

これを理解しようとしている最後の3時間私の髪を引っ張っている。ソリューションが機能しました。ありがとうございました。 –

+0

ここで私の仕事は終わった。 – cmeza

関連する問題