sessionStorage 与页面重载、关闭、标签页复制的逻辑关系

星丽大大_4179

星丽大大_4179

2026-07-26

896人浏览

原创

sessionstorage数据仅在标签页销毁时清除,刷新(f5/reload/回车/history.pushstate)均保留;关闭标签页后立即清空,但各浏览器清空时机不同:chrome/edge为最后同源标签页关闭时,firefox为进程退出时,safari为同源标签页关闭即清。

sessionstorage 与页面重载、关闭、标签页复制的逻辑关系

sessionStorage 的行为不取决于“页面是否重载”,而取决于“标签页是否被销毁”。它不是按页面加载次数计,而是按浏览器标签页实例的生命周期来管理数据。

页面重载(刷新)时数据始终保留

无论用 F5、location.reload()、地址栏回车,还是同域内 history.pushState 跳转,sessionStorage 都不会清空。因为这些操作只是重建 DOM 和 JS 上下文,标签页实例仍在运行,会话未终止。

  • 刷新后可直接用 sessionStorage.getItem() 读取原有数据
  • 注意:getItem 返回 null(不是 undefined),判断时应写 !== null
  • 框架(如 Vue/React)不会自动响应 sessionStorage 变化,需手动读取并赋值到响应式状态

标签页关闭时数据才真正清除

sessionStorage 在当前标签页完全释放资源后才被销毁,但具体时机因浏览器而异:

Ai Coach Batch Session Summary
Ai Coach Batch Session Summary

批量分析录音转写,输出多维度拓客报告。触发词:录音分析、总结、音频总结、拜访记录总结。当用户提及「分析录音」「看看录音数据」「最近的录音」「通话记录」且意图为批量统计/分析时触发。仅出现「录音」或「拜访」时需结合上下文,若仅查看单条详情则不触发。

下载
  • Chrome / Edge:仅当该源(origin)下最后一个同源标签页关闭时才清空;关掉其中一个,其他同源页的数据仍存在
  • Firefox:整个浏览器进程退出时统一清空(哪怕只关一个窗口,其他窗口开着也可能被清)
  • Safari(含 iOS):同源标签页关闭即清空;无痕模式默认禁用 sessionStorage,访问会直接抛 SecurityError
  • 在 beforeunload 或 pagehide 事件中仍可安全读写;unload 后不可再访问

新标签页或 iframe 不继承原 sessionStorage

sessionStorage 是严格按标签页隔离的,不是按域名或 URL 共享:

  • 右键“在新标签页中打开”或 window.open() 打开的页面,初始时是空的 sessionStorage(不是复制)
  • 同域名下,Tab A 存了 step: '2',Tab B 访问同一地址,getItem('step') 仍返回 null
  • iframe 即使与父页同源,其 window.sessionStorage 也是独立实例,彼此完全不互通

为什么有时关掉再开,数据“好像还在”?

这不是 sessionStorage 失效,而是浏览器机制造成的假象:

  • Chrome/Edge 默认保持后台页面活跃(如有音频、通知、Service Worker),导致进程未退出,sessionStorage 实际未被销毁
  • 启用“恢复上次会话”重启浏览器,部分版本会尝试还原标签页及原 sessionStorage(非标准行为,不可依赖)
  • 误把数据存到了 localStorage——它本就不随关闭消失,验证前请确认实际使用的存储 API

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

sessionstorage session

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2143

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

4603

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

5750

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

5178

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

743

5

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

2023.08.07

1975

5

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.23

2742

1

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

2023.10.13

936

3

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

2025.09.10

3059

7

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Beego 官方文档首页
Beego 官方文档首页

共0课时 | 0人学习

Laravel 5.8 中文文档手册
Laravel 5.8 中文文档手册

共74课时 | 139.2万人学习