You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

localStorage.clear()正确用法及同域存储数据互访问题咨询

localStorage 常见问题解答

1. localStorage.clear() 的作用范围

localStorage.clear() 严格遵循浏览器同源策略,作用范围明确:

  • 不会清空当前浏览器所有站点的 localStorage 数据,仅作用于当前页面协议、域名、端口三者完全一致的站点存储空间,不同浏览器、不同站点的 localStorage 完全隔离,不会删除其他程序或站点的存储配置。
  • 同一域名下的所有页面、脚本共享同一个 localStorage 存储空间,只要在同域环境下调用 localStorage.clear(),会清空该域名下所有存储的键值对,与写入数据的脚本/页面无关。你提到的同域名下 script1、script2 的场景中,任意脚本调用 localStorage.clear() 都会删除两个脚本的所有存储数据,确实存在误删风险。

2. 误删风险的防护方案

随意使用 localStorage.clear() 风险很高,推荐通过以下方式规避:

  • 业务侧统一为自己程序的存储键添加专属前缀,例如程序A的所有存储键都加 myApp_ 前缀,删除时仅筛选带此前缀的键单独删除,你提到的先筛选自有键再删除的操作是必要的,参考实现:
// 仅删除当前程序的存储数据
const APP_PREFIX = 'myApp_'
Object.keys(localStorage).forEach(key => {
  if (key.startsWith(APP_PREFIX)) {
    localStorage.removeItem(key)
  }
})

3. 测试用例跨页面无法读取存储的问题原因

你的测试代码逻辑没有问题,出现跨页面无法读取存储、仅能看到当前页面键的原因是你直接通过 file:// 协议打开本地 HTML 文件:浏览器对本地文件协议有特殊安全限制,即使是同目录下的文件,也会被判定为不同源,localStorage 自然无法共享。
你可以在本地启动任意静态文件服务,通过 http://localhost:端口 地址访问两个页面,此时二者属于同源,就能正常共享 localStorage 数据。

内容的提问来源于stack exchange,提问作者jmrker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 06:15:04