Chrome中用户自定义window值是否会在页面刷新或URL变更后保留?
解答
你看到的原回答存在表述偏差,混淆了window对象自定义属性的特性和其他存储方案/特殊场景的表现,你测试得到的undefined结果符合浏览器的标准运行逻辑:
- 常规页面加载(包括刷新、跳转至同域名其他页面)时,浏览器会销毁旧页面的整个文档上下文,重新创建全新的全局
window实例,之前挂载在旧window上的所有自定义属性会被完全清空,不可能自然保留。 - 原回答描述的「页面刷新保留、仅限定当前标签页」的特性,实际对应的是
window.sessionStorage,而非window本身的自定义属性:最主要的区别是这类信息不仅在页面刷新时保留,跨不同域名也同样生效,但仅限定于当前使用的标签页。
注:上述引用内容中「跨不同域名也同样生效」的表述不符合浏览器同源策略规则,所有客户端存储能力均受同源限制,跨域名无法直接共享数据。 - 仅在单页应用(SPA)的客户端路由跳转场景下,挂载在
window上的自定义属性会保留:因为SPA的客户端跳转不会触发整页重载,全局window对象没有被销毁重建,所以自定义属性会一直存在直到页面整页刷新或关闭标签。
页面间持久化变量的可选方案
如果需要在页面刷新、跳转后保留数据,可以根据需求选择对应的存储方案:
- 仅在当前标签页生效、关闭标签后自动清除、仅同源可访问:使用
sessionStorage
写入命令:sessionStorage.setItem('testKey', 'test-value')
读取命令:sessionStorage.getItem('testKey') - 长期本地存储、同源跨标签页可共享、手动清除才会消失:使用
localStorage
写入命令:localStorage.setItem('testKey', 'test-value')
读取命令:localStorage.getItem('testKey') - 需要存储大量结构化数据、支持事务查询:使用IndexedDB
内容的提问来源于stack exchange,提问作者Thiyagu
相关产品推荐
相关产品推荐

