0

0

什么是Web Storage_JavaScript中sessionStorage怎么用

幻影之瞳

幻影之瞳

发布时间:2026-01-13 18:29:01

|

528人浏览过

|

来源于php中文网

原创

sessionStorage是仅限当前标签页的会话级字符串键值存储,关闭标签页即清空;存取需手动JSON序列化/反序列化,刷新保留但新开同URL标签页无数据,不响应自身修改,适用于表单草稿等临时场景,非安全存储。

什么是web storage_javascript中sessionstorage怎么用

sessionStorage浏览器提供的会话级键值对存储机制,只在当前标签页生命周期内有效,关闭该标签页后数据自动清空。它不是“临时变量”,也不是“内存缓存”,而是一个有明确作用域、隔离性与序列化要求的持久化 API。


怎么存和取数据?注意类型转换

sessionStorage 只接受字符串作为值,传对象、数字、布尔值都会被 .toString() 强转,导致信息丢失:

// ❌ 错误:直接存对象 → 存进去的是 "[object Object]"
sessionStorage.setItem('user', { name: 'Alice' });

// ✅ 正确:手动序列化 + 反序列化 sessionStorage.setItem('user', JSON.stringify({ name: 'Alice', id: 123 })); const user = JSON.parse(sessionStorage.getItem('user') || '{}');

  • getItem() 找不到 key 时返回 null,不是 undefined,所以 || '{}'?? '{}' 是安全兜底
  • 数字、布尔等基础类型也建议统一走 JSON.stringify,避免隐式转换歧义(比如 0''

为什么刷新页面还在,但新开同个 URL 的标签页就没了?

这是 sessionStorage 最常被误解的一点:

  • ✅ 同一标签页内刷新、前进/后退、Ctrl+Shift+T 恢复关闭的页面 → 数据保留
  • ❌ 新开一个标签页(哪怕地址栏完全一样)→ 创建全新会话,sessionStorage 隔离且为空
  • ⚠️ window.open() 打开的子窗口会复制初始值,但之后各自独立修改,互不通知

这和 Cookie 的“会话 Cookie”行为不同——后者是按域名+协议共享的,而 sessionStorage 是严格按渲染进程实例隔离的。

立即学习Java免费学习笔记(深入)”;

Flex3组件和框架的生命周期 中文WORD版
Flex3组件和框架的生命周期 中文WORD版

在整本书中我们所涉及许多的Flex框架源码,但为了简洁,我们不总是显示所指的代码。当你阅读这本书时,要求你打开Flex Builder,或能够访问Flex3框架的源码,跟随着我们所讨论源码是怎么工作及为什么这样做。 如果你跟着阅读源码,请注意,我们经常跳过功能或者具体的代码,以便我们可以对应当前的主题。这样能防止我们远离当前的主题,主要是讲解代码的微妙之处。这并不是说那些代码的作用不重要,而是那些代码处理特别的案例,防止潜在的错误或在生命周期的后面来处理,只是我们当前没有讨论它。有需要的朋友可以下载看看

下载

监听别人改了 sessionStorage?别指望它

storage 事件不会响应当前页面自身的修改,只在同源的其他标签页调用 setItem/removeItem 时触发:

window.addEventListener('storage', (e) => {
  console.log('其他标签页改了:', e.key, e.newValue);
});
  • 当前页改了 sessionStorage,自己收不到这个事件
  • 中的同源页面修改,能触发父页的事件(前提是同源)
  • 如果你靠这个做跨标签页通信,得换方案(如 BroadcastChannel

哪些场景真适合用?哪些其实不该用?

✅ 推荐场景:

  • 多步骤表单草稿(用户意外关页后回来还能续填)
  • 单页应用中暂存路由参数或筛选条件(比如搜索页跳详情页再返回)
  • 临时令牌(如 OAuth 临时 code),配合显式过期检查(它自己不支持 TTL)

❌ 不该用的:

  • 用户长期偏好设置(该用 localStorage
  • 需要跨标签页同步的状态(sessionStorage 天然做不到)
  • 敏感凭证(如原始密码、长期 token)——它对 JS 完全可见,且无加密机制

最易被忽略的一点:sessionStorage 不是安全边界。只要页面能执行 JS,数据就能被读走。它解决的是“生命周期问题”,不是“保密问题”。

相关专题

更多
json数据格式
json数据格式

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

411

2023.08.07

json是什么
json是什么

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

532

2023.08.23

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

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

309

2023.10.13

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

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

74

2025.09.10

c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

231

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

435

2024.03.01

cookie
cookie

Cookie 是一种在用户计算机上存储小型文本文件的技术,用于在用户与网站进行交互时收集和存储有关用户的信息。当用户访问一个网站时,网站会将一个包含特定信息的 Cookie 文件发送到用户的浏览器,浏览器会将该 Cookie 存储在用户的计算机上。之后,当用户再次访问该网站时,浏览器会向服务器发送 Cookie,服务器可以根据 Cookie 中的信息来识别用户、跟踪用户行为等。

6416

2023.06.30

document.cookie获取不到怎么解决
document.cookie获取不到怎么解决

document.cookie获取不到的解决办法:1、浏览器的隐私设置;2、Same-origin policy;3、HTTPOnly Cookie;4、JavaScript代码错误;5、Cookie不存在或过期等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

340

2023.11.23

php与html混编教程大全
php与html混编教程大全

本专题整合了php和html混编相关教程,阅读专题下面的文章了解更多详细内容。

1

2026.01.13

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
React 教程
React 教程

共58课时 | 3.6万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 2.2万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 2.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号