Ricerca…


Sintassi

  • localStorage.setItem (nome, valore);

  • localStorage.getItem (nome);

  • localStorage.name = value;

  • localStorage.name;

  • localStorage.clear ()

  • localStorage.removeItem (nome);

Parametri

Parametro Descrizione
nome La chiave / nome dell'elemento
valore Il valore dell'articolo

Osservazioni

L'API di archiviazione Web è specificata nello standard di vita HTML WHATWG .

Utilizzo di localStorage

L'oggetto localStorage fornisce persistenti (ma non permanenti - vedi limiti sotto) l'archiviazione dei valori-chiave delle stringhe. Eventuali modifiche sono immediatamente visibili in tutte le altre finestre / frame dalla stessa origine. I valori memorizzati persistono indefinitamente a meno che l'utente non cancelli i dati salvati o configuri un limite di scadenza. localStorage utilizza un'interfaccia simile alla mappa per ottenere e impostare valori.

localStorage.setItem('name', "John Smith");
console.log(localStorage.getItem('name')); // "John Smith"

localStorage.removeItem('name');
console.log(localStorage.getItem('name')); // null

Se si desidera archiviare semplici dati strutturati, è possibile utilizzare JSON per serializzarlo su e da stringhe per la memorizzazione.

var players = [{name: "Tyler", score: 22}, {name: "Ryan", score: 41}];
localStorage.setItem('players', JSON.stringify(players));

console.log(JSON.parse(localStorage.getItem('players')));
// [ Object { name: "Tyler", score: 22 }, Object { name: "Ryan", score: 41 } ]

limiti di localStorage nei browser

Browser per dispositivi mobili:

Browser Google Chrome Browser Android Firefox Safari iOS
Versione 40 4.3 34 6-8
Spazio disponibile 10MB 2MB 10MB 5MB

Browser desktop:

Browser Google Chrome musica lirica Firefox Safari Internet Explorer
Versione 40 27 34 6-8 9-11
Spazio disponibile 10MB 10MB 10MB 5MB 10MB

Eventi di archiviazione

Ogni volta che un valore in set in localStorage, un evento di storage verrà inviato su tutte le altre windows dalla stessa origine. Questo può essere usato per sincronizzare lo stato tra pagine diverse senza ricaricare o comunicare con un server. Ad esempio, possiamo riflettere il valore di un elemento di input come testo di paragrafo in un'altra finestra:

Prima finestra
var input = document.createElement('input');
document.body.appendChild(input);

input.value = localStorage.getItem('user-value');

input.oninput = function(event) {
  localStorage.setItem('user-value', input.value);
};
Seconda finestra
var output = document.createElement('p');
document.body.appendChild(output);

output.textContent = localStorage.getItem('user-value');

window.addEventListener('storage', function(event) {
  if (event.key === 'user-value') {
    output.textContent = event.newValue;
  }
});

Gli appunti

L'evento non viene attivato o catchable in Chrome, Edge e Safari se il dominio è stato modificato tramite script.

Prima finestra
// page url: http://sub.a.com/1.html
document.domain = 'a.com';

var input = document.createElement('input');
document.body.appendChild(input);

input.value = localStorage.getItem('user-value');

input.oninput = function(event) {
  localStorage.setItem('user-value', input.value);
};
Seconda finestra
// page url: http://sub.a.com/2.html
document.domain = 'a.com';

var output = document.createElement('p');
document.body.appendChild(output);

// Listener will never called under Chrome(53), Edge and Safari(10.0).
window.addEventListener('storage', function(event) {
  if (event.key === 'user-value') {
    output.textContent = event.newValue;
  }
});

sessionStorage

L'oggetto sessionStorage implementa la stessa interfaccia di archiviazione di localStorage. Tuttavia, anziché essere condivisi con tutte le pagine della stessa origine, i dati sessionStorage vengono memorizzati separatamente per ogni finestra / scheda. I dati memorizzati persistono tra le pagine in quella finestra / scheda finché sono aperti, ma non sono visibili da nessun'altra parte.

var audio = document.querySelector('audio');

// Maintain the volume if the user clicks a link then navigates back here.
audio.volume = Number(sessionStorage.getItem('volume') || 1.0);
audio.onvolumechange = function(event) {
  sessionStorage.setItem('volume', audio.volume);
};

Salva i dati in sessionStorage

sessionStorage.setItem('key', 'value');

Ottieni i dati salvati da sessionStorage

var data = sessionStorage.getItem('key');

Rimuovi i dati salvati da sessionStorage

sessionStorage.removeItem('key')

Svuotamento dello spazio di archiviazione

Per cancellare lo spazio di archiviazione, è sufficiente eseguire

localStorage.clear();

Condizioni di errore

La maggior parte dei browser, se configurati per bloccare i cookie, bloccherà anche localStorage . I tentativi di usarlo comporteranno un'eccezione. Non dimenticare di gestire questi casi .

var video = document.querySelector('video')
try {
    video.volume = localStorage.getItem('volume')
} catch (error) {
    alert('If you\'d like your volume saved, turn on cookies')
}
video.play()

Se l'errore non è stato gestito, il programma smetterebbe di funzionare correttamente.

Rimuovi l'articolo di archiviazione

Per rimuovere un elemento specifico dal browser di archiviazione (l'opposto di setItem ) utilizzare removeItem

localStorage.removeItem("greet");

Esempio:

localStorage.setItem("greet", "hi");
localStorage.removeItem("greet");

console.log( localStorage.getItem("greet") ); // null

(Lo stesso vale per sessionStorage )

Modo più semplice di gestire lo storage

localStorage , sessionStorage sono oggetti JavaScript e puoi trattarli come tali.
Invece di usare metodi di archiviazione come .getItem() , .setItem() , ecc ... ecco un'alternativa più semplice:

// Set
localStorage.greet = "Hi!"; // Same as: window.localStorage.setItem("greet", "Hi!");

// Get
localStorage.greet;         // Same as: window.localStorage.getItem("greet");

// Remove item
delete localStorage.greet;  // Same as: window.localStorage.removeItem("greet");

// Clear storage
localStorage.clear();

Esempio:

// Store values (Strings, Numbers)
localStorage.hello = "Hello";
localStorage.year  = 2017;    

// Store complex data (Objects, Arrays)
var user = {name:"John", surname:"Doe", books:["A","B"]};
localStorage.user = JSON.stringify( user );

// Important: Numbers are stored as String
console.log( typeof localStorage.year ); // String

// Retrieve values
var someYear = localStorage.year; // "2017"

// Retrieve complex data
var userData = JSON.parse( localStorage.user );
var userName = userData.name; // "John"

// Remove specific data
delete localStorage.year; 

// Clear (delete) all stored data
localStorage.clear();

localStorage length

localStorage.length proprietà localStorage.length restituisce un numero intero che indica il numero di elementi nel localStorage

Esempio:

Imposta elementi

localStorage.setItem('StackOverflow', 'Documentation');
localStorage.setItem('font', 'Helvetica');
localStorage.setItem('image', 'sprite.svg');

Ottieni la lunghezza

localStorage.length; // 3


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow