2009-09-29 23 views
28

私はHTML5とlocalStorageを使いこなしています。私はローカルホスト上のFirefoxでページを実行するときに値が格納されることに気づいていますが(つまりhttp://127.0.0.1:8000/test/index.html)、ローカルでファイルを実行すると:/// C:/test/index.html)私の値は格納されません。 Safari 4は両方の設定で問題はありません。これは仕様によるものであれば だから誰もが知っている - >DOM Storage on the Mozilla Developer CenterFirefoxの「localStorage」は、ページがオンラインの場合にのみ動作しますか?

(Firefoxの2は、現在の文書よりも、ドメイン階層 に オブジェクト高いストレージへのアクセスを許可これがためには、Firefox 3で許さもはや ではありません。 セキュリティ上の理由から、また、HTML 5にこの 提案添加は、Firefox 3.5で実装 あるのlocalStorage、を支持してHTML 5仕様 から除去されている。)

または回避策がある場合は、
オンラインでのみ動作しますオフラインストレージは愚かに聞こえるので、私は疑問に思う:誰もが疑問に思う場合はP

、コードはそれを取得するのと同じくらい簡単です:

function save() 
{ 
localStorage.setItem('foo','bar'); 
} 

function load() 
{ 
var test = localStorage.getItem('foo'); 
alert(test); 
} 
+2

こんにちは、私はあなたに2011年から書いています。まだ修正されていません! https://bugzilla.mozilla.org/show%5Fbug.cgi?id = 507361 –

+0

... chromeでオフラインでもうまくいくようです – lapinferoce

+1

私はこれを見つけました...私はFirefoxでデバッグしようとしていて、どこに間違っていたのだろうと思っていました。 。これはIEとChromeで、file:// URLで作業していましたが、Firefoxは動作していませんでした。サーバーに置くとすぐにうまくいきました。 –

答えて

22

これはバグです:Bug 507361 - localStorage doesn't work in file:/// documents
すぐに希望が修正されます!

2011-09-13:「Mozilla8」で修正されたバグが修正されました。私はこれをFirefox 8でテストしたところ、今すぐ動作します。

+3

その間このバグはありませんので、Chromeを使用してスクリプトをオフラインでテストすることができます。 – lapo

+0

これを今すぐチェックすることはできませんが、これは最終的な答えだと思います! – hobotron

21

まあ、リンクされたドキュメントは

と言うん

localStorageはグローバルストレージ[location.hostname]と同じですが、はHTML5起点にスコープされています(スキーム+ホスト名+非標準ポート)

私はその意味を100%理解しているとは思っていませんが、角括弧内のビットはURLが特定のプロパティを持つ必要があることを示唆しています - 特に、スキームとホスト名はFirefox 5起源。あなたのhttp://127.0.0.1/がそうしている間に、file:///のURLがこれと一致しないと思われます。

edit:W3Cのdescription of the Origin propertyを見ると、手順7のように問題が発生している可能性があります。 localStorageの処理方法に応じて、ステップ12で返された3タプルを期待しているかもしれませんが、file:// URLの場合、戻り値はまったく何でもかまいません。

私はそれが設計によるものだと思います。反射では、実際にはこれが設計によるものではない可能性があります。 localStorageは、のURLではにならないようにしてください。あるブラウザ固有の実装の出力が別のものの期待と一致しない場合もあります。

回避策として、globalStorageはあなたがここでしたいことをしませんか?

関連する問題