Question

est l'objet HTML5 localStorage isolé par page / domaine? Je me demande en raison de la façon dont je nommerais clés localStorage. Ai-je besoin d'un préfixe séparé? Ou puis-je les nommer tout ce que je veux?

Était-ce utile?

La solution

Il est par domaine (les mêmes règles de ségrégation que le même politique d'origine ) , à le faire par page que vous auriez à utiliser une clé en fonction de la location, ou une autre approche.

Vous ne faites pas besoin un préfixe, utilisez un si vous en avez besoin cependant. En outre, oui, vous pouvez les nommer tout ce que vous voulez.

Autres conseils

Les magasins sont par origine , où l'origine est le même que pour le même politique d'origine (une combinaison de schéma [http contre https, etc.], le port et l'hôte). De la spécification :

  

Chaque haut niveau contexte de navigation dispose d'un ensemble unique de zones de stockage de session, un pour chaque origine.

Ainsi, le stockage pour http://a.example.com et le stockage pour http://b.example.com sont séparés (et ils sont tous deux séparés de http://stackoverflow.com) que ceux-ci sont tous différents hôtes. De même, http://example.com:80 et http://example.com:8080 et https://example.com sont toutes différentes origines.

Il n'y a pas de mécanisme intégré dans le stockage Web qui permet à une origine pour accéder au stockage d'un autre.

Notez qu'il est origine , pas l'URL, donc http://example.com/page1 et http://example.com/page2 ont tous deux accès au stockage pour http://example.com.

Oui, chaque domaine / sous-domaine a un autre localStorage et vous pouvez appeler les touches ce que vous voulez (le préfixe est pas nécessaire).

Pour obtenir une clé, vous pouvez utiliser la touche de méthode (index) comme

localStorage.key(0);

Il y avait un objet appelé globalStorage avant où vous pouvez avoir plusieurs localStorages, mais il a été dépréciée des spécifications

Je toujours utiliser un préfixe, juste pour éviter les collisions potentielles avec des scripts utilisateur -. Qui pourrait utiliser localStorage trop

Comme d'autres l'ont souligné, localStorage est unique par protocole, hôte et port. Si vous voulez un moyen pratique de contrôler votre stockage avec des clés préfixés, je vous suggère localDataStorage .

Non seulement il aider à faire respecter le stockage segmenté partagé dans le même domaine par des touches préfixant, il a également transparente magasins javascript types de données (Array, Boolean, Date, Float, Integer, String et Object), fournit l'obscurcissement de données légère, compresse automatiquement cordes, et facilite la requête par clé (nom), ainsi que la requête en valeur (clé).

[DISCLAIMER] Je suis l'auteur de l'utilitaire [/ DISCLAIMER]

Exemples:

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

Comme vous pouvez le voir, les valeurs primitives sont respectées, et vous pouvez créer plusieurs instances pour contrôler votre stockage.

Il est disponible partout sur ce domaine que Nick a proposé, comme alternative il y a sessionStorage fonctionne un peu différemment en ce qu'elle est distincte de la fenêtre du navigateur lui-même. C'est-à-dire que les autres onglets ou fenêtres sur le même domaine n'ont pas accès à la même copie de l'objet de stockage.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top