Domanda

E 'l'oggetto HTML5 localStorage isolato per pagina / dominio? Mi chiedo a causa di come vorrei citare le chiavi localStorage. Ho bisogno di un prefisso separata? O posso nominarli quello che voglio?

È stato utile?

Soluzione

E 'per ogni dominio (le stesse regole di segregazione come il stessa origine politica ) , per rendere la pagina per-che avrebbe dovuto utilizzare una chiave basata sul location, o qualche altro approccio.

Non è necessità un prefisso, utilizzare uno se ne avete bisogno però. Inoltre, sì, è possibile assegnare loro un nome quello che vuoi.

Altri suggerimenti

I negozi sono per origine , in cui origine è la stessa che per il Same Origin Policy (una combinazione di schema [http vs. https, ecc], porta e l'host). Da la specifica :

  

Ogni contesto di navigazione di livello superiore ha un unico insieme di aree di stoccaggio di sessione, uno per ogni origine.

In questo modo, l'archiviazione per http://a.example.com e l'archiviazione per http://b.example.com sono separati (e sono entrambi separati dal http://stackoverflow.com) come questi sono tutti gli host differenti. Allo stesso modo, http://example.com:80 e http://example.com:8080 e https://example.com sono tutte le origini differenti.

Non v'è alcun meccanismo incorporato in deposito web che permette di origine per l'accesso allo stoccaggio di un'altra.

Si noti che è origine , non URL, così http://example.com/page1 e http://example.com/page2 entrambi hanno accesso alla memoria per http://example.com.

Si, ogni dominio / sottodominio ha un diverso localStorage ed è possibile chiamare le chiavi quello che vuoi (prefisso non è richiesto).

Per ottenere una chiave è possibile utilizzare la chiave di metodo (indice), come

localStorage.key(0);

C'è stato un oggetto chiamato globalStorage prima di dove si potrebbe avere più localStorages, ma è stato deprecato dalle specifiche

Ho sempre usare un prefisso, solo per evitare potenziali collisioni con gli script utente -. Che potrebbe utilizzare localStorage troppo

Come altri hanno già fuori a punta, localStorage è univoco per ogni protocollo, Host & porto. Se si desidera un modo pratico per controllare lo storage con le chiavi prefissati, suggerisco localDataStorage .

Non solo contribuire a far rispettare storage condiviso segmentato all'interno dello stesso dominio anteponendo le chiavi, ma anche memorizza in modo trasparente i tipi di dati JavaScript (Array, Boolean, Data, Float, Integer, String e Object), fornisce offuscamento dei dati leggero, comprime automaticamente stringhe e facilita query chiave (nome), così come di query per valore (chiave).

[Disclaimer] Io sono l'autore del programma di utilità [/ NEGAZIONE]

Esempi:

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

Come si può vedere, i valori primitivi siano rispettati, e si possono creare diverse istanze per controllare lo storage.

E 'disponibile ovunque su quel dominio come Nick ha suggerito, in alternativa c'è sessionStorage funziona in modo leggermente diverso in quanto è distinta per la finestra del browser stesso. Vale a dire che le altre schede o finestre sullo stesso dominio non hanno accesso alla stessa copia dell'oggetto stoccaggio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top