2013-03-18 6 views
9

localStorageのすべてを抹消するにはclear()を使用する必要がありますか、またはその特定のサイトに設定したものを手作業でremoveItem()する必要がありますか?localStorage - clear()またはremoveItem()?

他の値が設定されている場合は、ユーザーのlocalStorageを消去しないようにしたいので頼みます。私はlocalhostでこれをテストしていて、clear()を使用することによって、以前に他のプロジェクトで設定していたものすべてが一掃されたことに気付きました。

編集:私はlocalStorageがドメインロックされていることを知っておく必要があります。私はこの構造に従ったサイトを運営しています:

public-html 
(localStorage) 
--project1 
----files 
--project2 
----files 
--project3 
----files 

各ファイルはそれ自身の別々のlocalStorage変数を使用しています。プロジェクト012内のlocalstorage.clear()の場合、project1とproject3の設定も失われます。

+1

ここで何が問題なのかよく分かりません。あなたは「クリア」を使うことができないと言っています... – user123444555621

答えて

10

localstorageは原点にキーイングされています。したがって、すべてのプロジェクトがローカルホスト上で実行されている場合は、clear()を使用するときにすべての値を消去し、安全な方法は個別に削除することだけです。

プロダクション環境では、各プロジェクトはそれぞれ独自のドメインを持ち、clearは安全でなければなりません。

これは、他の何が現在の起源であるかを知ることの問題です。あなたが現在の起源のすべてを制御し、すべてを拭いてもかまわない場合は、clear()がその目的のために設計された最良の選択です。 localstorageまたは同じ起点にホストされている他のプロジェクトを使用しているコードの他の部分がある場合は、より選択して使用したいと思うでしょう。removeItem()

+0

残念ながら私は私のプロジェクトのすべてのための孤独なドメインを持っていません - 私は単にそれを買う余裕がありませんでした。私は自分の個人的な「ポートフォリオ」風のウェブサイトの下にすべてを置いておきたいと思います。サブフォルダには私の別々の異なるプロジェクトがそれぞれ含まれています。しかし、ありがとう、 'removeItem()'のように見える方法です! – Scott

+0

@Jaxoプロジェクトごとに異なるサブドメインを持っている場合 'clear()'はまだ動作します – Markasoftware

5

clear()は、現在の原点(https://developer.mozilla.org/en-US/docs/JavaScript/Same_origin_policy_for_JavaScript)のすべてをクリアします。 example.comのclear()を使用しても、example2.comのlocalStorageには影響しません。すべてのテストファイルが同じ起点(http://localhostまたはfile:///C:\)にあるため、コンピュータ上のすべてのプロジェクトのデータがクリアされます。したがって、使用すると問題なく使用されますclear()