Я не знайшов універсального способу отримати решту обмежень для потрібних браузерів, але виявив, що коли ви досягнете межі, з’являється повідомлення про помилку. Звичайно, це різниться в кожному браузері.
Щоб максимізувати це, я використав цей маленький скрипт:
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");
Звідси я отримав таку інформацію:
Гугл хром
- Виняток DOME:
- код: 22
- повідомлення: "Не вдалося виконати 'setItem' на 'Storage': встановлення значення 'data' перевищило квоту."
- name: "QuotaExceededError"
Mozilla Firefox
- Виняток DOME:
- код: 1014
- повідомлення: "Досягнуто максимальний розмір постійного сховища"
- ім'я: "NS_ERROR_DOM_QUOTA_REACHED"
Сафарі
- Виняток DOME:
- код: 22
- повідомлення: "QuotaExceededError: DOM Exception 22"
- name: "QuotaExceededError"
Internet Explorer, Edge (спільнота)
- Виняток DOME:
- код: 22
- повідомлення: "QuotaExceededError"
- name: "QuotaExceededError"
Моє рішення
Поки що моє рішення полягає в додаванні додаткового дзвінка кожного разу, коли користувач що-небудь збереже. І якщо буде вилучено виняток, я б сказав їм, що у них закінчується ємність для зберігання.
Редагувати: видалити додані дані
Я забув згадати, що для того, щоб це насправді працювало, вам потрібно буде видалити DATA
елемент, який був встановлений спочатку. Зміна відображається вище за допомогою функції removeItem () .