localStorage 写满报 QuotaExceededError,怎么兜底和清理

localStorage 单个域通常只有几 MB,写满后写入直接抛异常。

写入必须包 try/catch,捕获后降级到内存或 IndexedDB,别让页面白屏。

清理时按前缀挑自己业务的 key 删,别 clear 整域,会连带别的模块。

try {
  localStorage.setItem('form-draft', JSON.stringify(data));
} catch (e) {
  // 配额满或隐私模式下写入会抛 QuotaExceededError
  if (e.name === 'QuotaExceededError') memoryStore.set(key, data);
}
// 只清自己前缀的键
Object.keys(localStorage)
  .filter(k => k.startsWith('form-'))
  .forEach(k => localStorage.removeItem(k));
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容