#Что означает ошибка
QuotaExceededError
Хранилище может быть переполнено (около 5 МБ), отключено в приватном режиме или заблокировано политикой. Оберните доступ в try/catch.
#Причины и признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Переполнение | QuotaExceededError возникает при сохранении строки. | Уменьшите объём localStorage, используйте IndexedDB. |
| Приватный режим | Ограничения приватного режима влияют на доступ. | Проверьте допустимость хранения в данном режиме. |
| Cookie отключены | Политика блокирует данные сайта. | Не отключайте защиту целиком, сообщите о невозможности хранения. |
| iframe | iframe не имеет доступа в нужном источнике. | Проверьте origin и разрешения встроенного контекста. |
#Пошаговое решение
- Определите тип исключенияОткройте страницу в браузере, нажмите F12 → «Консоль» и найдите точное имя ошибки:
QuotaExceededErrorуказывает на превышение квоты хранилища,SecurityError— на запрещённый доступ из текущего контекста. Эти два случая исправляются по-разному. В приватном режиме, iframe и при блокировке cookie доступ может отличаться. - Проверьте объём данных безопасноНа вкладке «Приложение» (Chrome/Edge) → «Локальное хранилище» выберите текущий источник и просмотрите ключи. Не нажимайте «Очистить хранилище»: это удалит и чужие данные сайта. Выясните, не записывается ли огромный JSON или повторяющийся кеш вместо маленьких настроек.
- Измените код приложения для больших объёмовДля больших данных используйте IndexedDB или серверное хранение; в localStorage оставляйте небольшие строки. Обрабатывайте исключения с
try { localStorage.setItem(key,value); } catch (e) { ... }, различая имена ошибок, и предупреждайте пользователя о невозможности сохранения. Не рассчитывайте на фиксированный лимит в байтах для всех браузеров. - Проверьте доступность контекстаПри
SecurityErrorоткройте приложение на нормальном адресеhttps://или наhttp://localhostдля разработки; проверьте разрешения cookie/данных сайта и ограничения iframe. Не отключайте все настройки приватности пользователю. Перезагрузите страницу и убедитесь, что настройки действительно сохраняются после обновления.
#Если проблема осталась
Если «JavaScript — localStorage — QuotaExceededError и SecurityError» повторяется, сохраните время, состояние подключения и точный текст ошибки. Не меняйте сразу несколько настроек — иначе станет трудно понять, какое действие повлияло на результат.