HTML5では、ページ/ドメインごとに分離のlocalStorageオブジェクトですか?

StackOverflow https://stackoverflow.com/questions/4201239

  •  25-09-2019
  •  | 
  •  

質問

HTML5のlocalStorageオブジェクトは、ページ/ドメインごとに分離されていますか?私はので、私はのlocalStorageキーに名前を付けるだろうかと疑問に思って。私は別の接頭辞が必要なのでしょうか?それとも私が欲しいものは何でもそれらに名前を付けることができますか?

役に立ちましたか?

解決

これは、ドメインごとに(同一生成元ポリシーのと同じ分別ルール)です、ページごとにそれを作るために、あなたはlocationに基づいてキー、または他のいくつかのアプローチを使用する必要があると思います。

あなたません。の必要性のプレフィックス、使用1あなたはかかわらず、それを必要とする場合。また、はい、あなたが欲しいものは何でもそれらに名前を付けることができます。

他のヒント

起源は同一のものと同じである起源あたり

店舗があるの、原点ポリシーに(スキーマの組み合わせ[httphttps、等]、ポート、およびホスト)。 からスペックのます:

  

は各トップレベル・ブラウジング・コンテキストは、セッション記憶領域の一意のセット、各原点のための1つを有している。

それらは全て異なる宿主であるように、

はこのように、http://a.example.comhttp://b.example.comための貯蔵のための貯蔵には、独立している(それらは両方http://stackoverflow.comから分離しています)。同様に、http://example.com:80http://example.com:8080https://example.comは全て異なる起源である。

1人の起源は、別のストレージにアクセスすることを可能にするウェブストレージに組み込まれた機構がない。

なお、それのの起源のではなく、URL、http://example.com/page1http://example.com/page2ので、両方http://example.com用のストレージへのアクセスを持っています。

うん、各ドメイン/サブドメインは、ののlocalStorage異なるのを持って、あなたは(接頭辞は必要ありません)あなたが好きなキーを呼び出すことができます。

あなたがメソッドのキー(インデックス)を使用することができますキーを取得するなど、

localStorage.key(0);

と呼ばれるオブジェクトがあったの globalStorage を使用すると、複数のlocalStoragesを持つことができ、それはスペックから廃止されていますどこの前に

私は常にちょうどユーザスクリプトとの潜在的な衝突を避けるために、接頭辞を使用したい - 。あまりにものlocalStorageを使用することができた。

他の人が指摘したように、

は、のlocalStorageは、プロトコル、ホスト&ポートごとに一意です。あなたは接頭辞のキーを使用してストレージを管理するための便利な方法をしたい場合は、私がお勧め localDataStorageするます。

だけでなく、それは助け鍵を付けることによって、同じドメイン内のセグメント化され、共有ストレージを強制しない、それはまた、透過的、自動的にJavaScriptのデータ型(アレイ、論理値、日付、フロート、整数、文字列やオブジェクト)、軽量のデータの難読化を提供し、圧縮を保存します文字列、および(キー)の値によってキー(名前)によって、クエリなどのクエリを容易にします。

[免責事項]私はユーティリティの作者だ[/免責事項]

例:

// instantiate our first storage object
// internally, all keys will use the specified prefix, i.e. passphrase.life
var localData = localDataStorage( 'passphrase.life' );

localData.set( 'key1', 'Belgian' )
localData.set( 'key2', 1200.0047 )
localData.set( 'key3', true )
localData.set( 'key4', { 'RSK' : [1,'3',5,'7',9] } )
localData.set( 'key5', null )

localData.get( 'key1' )   -->   'Belgian'
localData.get( 'key2' )   -->   1200.0047
localData.get( 'key3' )   -->   true
localData.get( 'key4' )   -->   Object {RSK: Array(5)}
localData.get( 'key5' )   -->   null


// instantiate our second storage object
// internally, all keys will use the specified prefix, i.e. prismcipher.com
var localData2 = localDataStorage( 'prismcipher.com' );

localData2.set( 'key1', 123456789 )  // integer

localData2.get( 'key1' )   -->   123456789

あなたが見ることができるように、プリミティブ値が尊重され、そしてあなたがあなたのストレージを制御するための複数のインスタンスを作成することができます。

ニックはそれがブラウザウィンドウ自体に別個のものであるという点でのsessionStorageは多少異なる働きがあり、代替として、提案されているよう

これは、そのドメインで利用可能な任意の場所にあります。これは、同じドメイン上の他のタブやウィンドウは、ストレージオブジェクトの同じコピーへのアクセスを持っていないと言うことです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top