---
title: Storage
slug: Web/API/Storage
translation_of: Web/API/Storage
---
<p>{{APIRef("Web Storage API")}}</p>

<p>Die <code>Storage</code>-Schnittstelle der Web-Storage-API ermöglicht den Zugriff auf einfache Schlüssel-Wert-Datenbanken des Browsers, in denen Daten mit einer Domain verknüpft gespeichert werden können.</p>

<p>In {{domxref("Window.sessionStorage")}} gespeicherte Daten verfallen mit Ablauf der Sitzung (in der Regel dem Schließen des Browsers), {{domxref("Window.localStorage")}} speichert die Daten hingegen grundsätzlich zeitlich unbegrenzt.</p>

<h2 id="Eigenschaften">Eigenschaften</h2>

<dl>
 <dt>{{domxref("Storage.length")}} {{readonlyInline}}</dt>
 <dd>Anzahl der in diesem <code>Storage</code>-Objekt gespeicherten Datensätze.</dd>
</dl>

<h2 id="Methoden">Methoden</h2>

<dl>
 <dt>{{domxref("Storage.key()")}}</dt>
 <dd>Gibt unter Angabe einer Zahl n den Schlüssel des n-ten Datensatzes zurück.</dd>
</dl>

<dl>
 <dt>{{domxref("Storage.getItem()")}}</dt>
 <dd>Gibt den zum Schlüssel gehörigen Wert zurück.</dd>
 <dt>{{domxref("Storage.setItem()")}}</dt>
 <dd>Speichert den gegebenen Wert im Storage-Objekt unter dem gegebenen Schlüssel. Ist unter diesem Schlüssel bereits ein Datensatz vorhanden, wird sein Wert mit dem gegebenen überschrieben.</dd>
 <dt>{{domxref("Storage.removeItem()")}}</dt>
 <dd>Löscht den Datensatz des gegebenen Schlüssels.</dd>
 <dt>{{domxref("Storage.clear()")}}</dt>
 <dd>Löscht sämtliche Datensätze des Storage-Objekts.</dd>
</dl>

<h2 id="Beispiele">Beispiele</h2>

<p>In diesem Beispiel wird auf das <code>Storage</code>-Objekt <code>localStorage</code> zugegriffen.</p>

<p>Zuerst wird mit <code>!localStorage.getItem('bgcolor') </code>geprüft, ob das Objekt keinen Datensatz namens <code>bgcolor</code> enthält. Ist der Datensatz <code>bgcolor</code> nicht vorhanden, wird <code>populateStorage()</code> aufgerufen, um Werte aus der Seite auszulesen und mittels {{domxref("Storage.setItem()")}} im <code>Storage</code>-Objekt zu speichern.<br>
 Anschließend folgt der Aufruf der Funktion <code>setStyles()</code>, die alle Daten mittels {{domxref("Storage.getItem()")}} ausliest und die Darstellung der Seite entsprechend ändert.<br>
  </p>

<pre class="brush: js">if(!localStorage.getItem('bgcolor')) {
  populateStorage();
}
setStyles();

function populateStorage() {
  localStorage.setItem('bgcolor', document.getElementById('bgcolor').value);
  localStorage.setItem('font', document.getElementById('font').value);
  localStorage.setItem('image', document.getElementById('image').value);
}

function setStyles() {
  var currentColor = localStorage.getItem('bgcolor');
  var currentFont = localStorage.getItem('font');
  var currentImage = localStorage.getItem('image');

  document.getElementById('bgcolor').value = currentColor;
  document.getElementById('font').value = currentFont;
  document.getElementById('image').value = currentImage;

  htmlElem.style.backgroundColor = '#' + currentColor;
  pElem.style.fontFamily = currentFont;
  imgElem.setAttribute('src', currentImage);
}</pre>

<div class="note">
<p><strong>Anmerkung</strong>: Dieses Beispiel kann unter <a href="https://github.com/mdn/web-storage-demo">Web Storage Demo</a> ausprobiert werden.</p>
</div>

<h2 id="Spezifikationen">Spezifikationen</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">Spezifikation</th>
   <th scope="col">Status</th>
   <th scope="col">Kommentar</th>
  </tr>
  <tr>
   <td>{{SpecName('Web Storage', '#the-storage-interface', 'Storage')}}</td>
   <td>{{Spec2('Web Storage')}}</td>
   <td> </td>
  </tr>
 </tbody>
</table>

<h2 id="Browserkompatibilität">Browserkompatibilität</h2>

<p>{{CompatibilityTable}}</p>

<div id="compat-desktop">
<table class="compat-table">
 <tbody>
  <tr>
   <th>Feature</th>
   <th>Chrome</th>
   <th>Edge</th>
   <th>Firefox (Gecko)</th>
   <th>Internet Explorer</th>
   <th>Opera</th>
   <th>Safari (WebKit)</th>
  </tr>
  <tr>
   <td>localStorage</td>
   <td>4</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>3.5</td>
   <td>8</td>
   <td>10.50</td>
   <td>4</td>
  </tr>
  <tr>
   <td>sessionStorage</td>
   <td>5</td>
   <td>{{CompatUnknown}}</td>
   <td>2</td>
   <td>8</td>
   <td>10.50</td>
   <td>4</td>
  </tr>
 </tbody>
</table>
</div>

<div id="compat-mobile">
<table class="compat-table">
 <tbody>
  <tr>
   <th>Feature</th>
   <th>Android</th>
   <th>Edge</th>
   <th>Firefox Mobile (Gecko)</th>
   <th>IE Phone</th>
   <th>Opera Mobile</th>
   <th>Safari Mobile</th>
  </tr>
  <tr>
   <td>Basic support</td>
   <td>2.1</td>
   <td>{{CompatVersionUnknown}}</td>
   <td>{{ CompatUnknown }}</td>
   <td>8</td>
   <td>11</td>
   <td>3.2[1]</td>
  </tr>
 </tbody>
</table>
</div>

<p>[1] Seit iOS 5.1 speichert Safari Mobile in <code>localStorage</code> abgelegte Daten im Cache-Verzeichnis. Dieses wird in unregelmäßigen Abständen vom Betriebssystem teilweise geleert, spätestens jedoch, sobald nur noch wenig Speicherplatz zur Verfügung steht.<br>
 Desweiteren verhindert der private Modus von Safari Mobile jegliche Nutzung von <code>localStorage</code>.</p>

<p>Die Speicherkapazität von <code>localStorage</code> und <a class="new" href="https://developer.mozilla.org/de/docs/Web/API/SessionStorage" title="Die Beschreibung hierüber wurde bisher noch nicht geschrieben; bitte erwäge, mitzuwirken!"><code>sessionStorage</code></a>. unterscheidet sich von Browser zu Browser (siehe diese <a class="external external-icon" href="http://dev-test.nemikor.com/web-storage/support-test/">detailierte Aufstellung der Speicherkapazitäten für verschiedene Browser</a>).</p>

<h2 id="Siehe_auch">Siehe auch</h2>

<p><a href="/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API">Using the Web Storage API</a></p>