Sök…


Syntax

  • localStorage.setItem (namn, värde);

  • localStorage.getItem (namn);

  • localStorage.name = värde;

  • localStorage.name;

  • localStorage.clear ()

  • localStorage.removeItem (namn);

parametrar

Parameter Beskrivning
namn Objektets nyckel / namn
värde Värdet på artikeln

Anmärkningar

Web Storage API anges i WHATWG HTML Living Standard .

Med hjälp av localStorage

LocalStorage-objektet ger en bestående (men inte permanent - se gränser nedan) nyckelvärde lagring av strängar. Eventuella ändringar syns omedelbart i alla andra fönster / ramar från samma ursprung. De lagrade värdena kvarstår på obestämd tid om inte användaren rensar sparade data eller konfigurerar en utgångsgräns. localStorage använder ett kartliknande gränssnitt för att få och ställa in värden.

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

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

Om du vill lagra enkla strukturerade data kan du använda JSON för att serialisera dem till och från strängar för lagring.

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 } ]

localStorage-gränser i webbläsare

Mobila webbläsare:

Webbläsare Google Chrome Android-webbläsare Firefox iOS Safari
Version 40 4,3 34 6-8
Utrymme tillgängligt 10 MB 2MB 10 MB 5 MB

Desktop-webbläsare:

Webbläsare Google Chrome Opera Firefox Safari Internet Explorer
Version 40 27 34 6-8 9-11
Utrymme tillgängligt 10 MB 10 MB 10 MB 5 MB 10 MB

Lagringsevenemang

Varje gång ett värde anges i localStorage, kommer en storage att skickas till alla andra windows från samma ursprung. Detta kan användas för att synkronisera tillstånd mellan olika sidor utan att ladda om eller kommunicera med en server. Vi kan till exempel återspegla värdet på ett inmatningselement som stycketext i ett annat fönster:

Första fönstret
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);
};
Andra fönstret
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;
  }
});

anteckningar

Händelse avfyras inte eller kan fångas under Chrome, Edge och Safari om domänen ändrades via skript.

Första fönstret
// 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);
};
Andra fönstret
// 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

SessionStorage-objektet implementerar samma lagringsgränssnitt som localStorage. Istället för att delas med alla sidor med samma ursprung lagras dock sessionStorage-data separat för varje fönster / flik. Lagrad information kvarstår mellan sidor i det fönstret / fliken så länge den är öppen, men är synlig ingen annanstans.

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);
};

Spara data i sessionStorage

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

Hämta sparade data från sessionStorage

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

Ta bort sparade data från sessionStorage

sessionStorage.removeItem('key')

Rensar lagring

För att rensa lagringen, kör bara

localStorage.clear();

Felförhållanden

De flesta webbläsare, när de är konfigurerade för att blockera kakor, kommer också att blockera localStorage . Försök att använda det kommer att resultera i ett undantag. Glöm inte att hantera dessa ärenden .

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()

Om fel inte hanterades skulle programmet sluta fungera korrekt.

Ta bort lagringsobjektet

För att ta bort ett specifikt objekt från webbläsarens lagring (motsatsen till setItem ) använd removeItem

localStorage.removeItem("greet");

Exempel:

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

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

(Samma gäller för sessionStorage )

Enklare sätt att hantera lagring

localStorage , sessionStorage är JavaScript- objekt och du kan behandla dem som sådana.
Istället för att använda lagringsmetoder som .getItem() , .setItem() osv ... här är ett enklare alternativ:

// 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();

Exempel:

// 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();

lokal lagringslängd

localStorage.length egenskapen returnerar ett heltal som anger antalet element i localStorage

Exempel:

Ställ in objekt

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

Få längd

localStorage.length; // 3


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow