Ich habe keinen universellen Weg gefunden, um das verbleibende Limit für die von mir benötigten Browser zu ermitteln, aber ich habe herausgefunden, dass beim Erreichen des Limits eine Fehlermeldung angezeigt wird. Dies ist natürlich in jedem Browser anders.
Um das Maximum herauszuholen, habe ich dieses kleine Skript verwendet:
for (var i = 0, data = "m"; i < 40; i++) {
try {
localStorage.setItem("DATA", data);
data = data + data;
} catch(e) {
var storageSize = Math.round(JSON.stringify(localStorage).length / 1024);
console.log("LIMIT REACHED: (" + i + ") " + storageSize + "K");
console.log(e);
break;
}
}
localStorage.removeItem("DATA");
Daraus habe ich folgende Informationen erhalten:
Google Chrome
- DOME-Ausnahme:
- Code: 22
- message: "Fehler beim Ausführen von 'setItem' in 'Storage': Das Festlegen des Werts von 'data' hat das Kontingent überschritten."
- Name: "QuotaExceededError"
Mozilla Firefox
- DOME-Ausnahme:
- Code: 1014
- Nachricht: "Maximale Größe des persistenten Speichers erreicht"
- Name: "NS_ERROR_DOM_QUOTA_REACHED"
Safari
- DOME-Ausnahme:
- Code: 22
- Nachricht: "QuotaExceededError: DOM-Ausnahme 22"
- Name: "QuotaExceededError"
Internet Explorer, Edge (Community)
- DOME-Ausnahme:
- Code: 22
- Nachricht: "QuotaExceededError"
- Name: "QuotaExceededError"
Meine Lösung
Bisher besteht meine Lösung darin, jedes Mal, wenn der Benutzer etwas speichert, einen zusätzlichen Anruf hinzuzufügen. Und wenn die Ausnahme abgefangen wird, würde ich ihnen sagen, dass ihnen die Speicherkapazität ausgeht.
Bearbeiten: Löschen Sie die hinzugefügten Daten
Ich habe vergessen zu erwähnen, dass Sie das DATA
ursprünglich festgelegte Element löschen müssen, damit dies tatsächlich funktioniert . Die Änderung wird oben mithilfe der Funktion removeItem () wiedergegeben .