Я не нашел универсального способа получить оставшееся ограничение для нужных мне браузеров, но я обнаружил, что, когда вы достигаете предела, появляется сообщение об ошибке.Это, конечно, отличается в каждом браузере.
Чтобы максимально его использовать, я использовал этот маленький скрипт:
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");
Из этого я получил эту информацию:
Google Chrome
- DOMException:
- код: 22 * 1015 *
- сообщение: "Не удалось выполнить 'setItem' в 'Хранилище': установка значения«данные» превысили квоту. »
- имя:« QuotaExceededError »
Mozilla Firefox
- DOMException:
- код: 1014
- сообщение: «Достигнут максимальный размер постоянного хранилища»
- имя: «NS_ERROR_DOM_QUOTA_REACHED»
Safari
- DOMException:
- код: 22 * 1047 *
- сообщение: "QuotaExceededError: DOM Exception 22"
- name: "QuotaExceededError"
Internet Explorer, Edge (сообщество)
- DOMException:
- код: 22 * 1063 *
- сообщение: "QuotaExceededError "
- имя:" QuotaExceededError "
Мое решение
Пока мое решениедобавить дополнительный вызов каждый раз, когда пользователь будет сохранять что-либо.И если возникнет исключение, я скажу им, что у них заканчивается емкость.
Редактировать: удалить добавленные данные
Я забылОтметим, что для того, чтобы это действительно работало, вам нужно удалить элемент DATA
, который был установлен изначально.Изменение отражено выше с помощью функции removeItem () .