Frage

Ist das HTML5 localstorage-Objekt pro Seite / Domain isoliert? Ich frage mich, weil, wie ich local Schlüssel nennen würde. Benötige ich einen separaten Präfix? Oder kann ich ihnen einen Namen geben, was ich will?

War es hilfreich?

Lösung

Es ist pro Domain (die gleichen Regeln wie Segregation der Same Origin Policy ) , es zu machen pro-Seite, die Sie auf der Grundlage des location einen Schlüssel verwenden müßten, oder einen anderen Ansatz.

Sie können Notwendigkeit ein Präfix, Gebrauch ein, wenn Sie brauchen es aber. Auch ja, man kann ihnen einen Namen geben, was Sie wollen.

Andere Tipps

Die Läden sind pro Herkunft , wobei Herkunft die gleichen wie für die Same Origin Policy (eine Kombination aus Schema [http gegen https, etc.], Port und Host). Aus die spec :

  

Jeder Top-Level-Browsing Kontext hat einen einzigartigen Satz von Sitzungsspeicherbereichen, einer für jede Herkunft.

Damit ist der Speicher für http://a.example.com und die Lagerung für http://b.example.com getrennt sind (und sie sind beide getrennt von http://stackoverflow.com), wie sie sind alle verschiedenen Hosts. In ähnlicher Weise ist http://example.com:80 und http://example.com:8080 und https://example.com all unterschiedliche Herkunft.

Es gibt keinen Mechanismus in Web-Speicher eingebaut, die einen gemeinsamen Ursprung für den Zugriff die Speicherung eines anderen ermöglicht.

Beachten Sie, dass es die Herkunft , nicht URL, so http://example.com/page1 und http://example.com/page2 beide haben Zugriff auf den Speicher für http://example.com.

Ja, jede Domain / Sub-Domain hat eine andere local und Sie können die Tasten aufrufen, was Sie wollen (Präfix ist nicht erforderlich).

Um einen Schlüssel erhalten Sie die Methode Taste (Index) wie

verwenden können,
localStorage.key(0);

Es ist ein Objekt mit dem Namen globalStorage vor, wo Sie mehrere localStorages haben könnte, aber es wurde von den Spezifikationen veraltet

Ich würde immer einen Präfix verwenden, nur mögliche Kollisionen mit Benutzerskripten zu vermeiden -. Die localstorage verwenden könnte

Wie andere haben darauf hingewiesen, ist einzigartig local pro Protokoll, Host & Port. Wenn Sie eine praktische Art und Weise zu steuern, Ihre Speicher mit dem Präfix Schlüssel wollen, schlage ich vor, localDataStorage .

Nicht nur, dass es helfen, durch das Vorsetzen Schlüssel innerhalb derselben Domäne segmentierte gemeinsam genutzten Speicher erzwingen, es speichert auch transparent Javascript-Datentypen (Array, Boolean, Datum, Float, Integer, String und Object), leichte Datenverschleierungs bietet, automatisch Kompressen Strings und erleichtert Abfrage durch Schlüssel (Namen) sowie Abfrage von (key) Wert.

[HAFTUNGSAUSSCHLUSS] Ich bin der Autor des utility [/ HAFTUNGSAUSSCHLUSS]

Beispiele:

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

Wie Sie sehen können, primitive Werte eingehalten werden, und Sie können mehrere Instanzen erstellen Sie Ihre Speicher zu steuern.

Es gibt ihn überall auf dieser Domain als Nick vorgeschlagen, als Alternative gibt es session etwas anders in funktioniert, dass es unterscheidet sich in das Browserfenster selbst. Das heißt, dass andere Tabs oder Fenster auf der gleichen Domain haben keinen Zugriff auf diese gleiche Kopie des Speicherobjekts.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top