sessionstorage只能存储字符串,存对象需先json.stringify()序列化,取时用json.parse()反序列化;若直接存对象会变成"[object object]",且跨标签页不共享,关闭标签页即清空。

SessionStorage 不能自动跨页面共享,所谓“多页面传递”,本质是开发者在跳转前手动存、跳转后手动取,且必须保证同源同标签页。它只适合临时、非敏感、单次会话内有效的数据中转。
sessionStorage.setItem() 存数据时为什么值变空或变成 "[object Object]"
因为 sessionStorage 只接受字符串作为值,传入对象、数组、函数等会自动调用 toString(),结果就是 "[object Object]" 或 "[object Array]"。
- 存对象前必须用
JSON.stringify()序列化:sessionStorage.setItem('user', JSON.stringify({id: 1, name: 'Alice'})) - 取的时候反向操作:
const user = JSON.parse(sessionStorage.getItem('user')) - 如果原始数据含
undefined、function、Date、RegExp等,JSON.stringify()会丢弃它们——这不是 bug,是 JSON 标准限制
跳转后 sessionStorage.getItem() 返回 null 的常见原因
看起来写了存、也写了取,但始终拿不到值,大概率是作用域或时机问题。
批量分析录音转写,输出多维度拓客报告。触发词:录音分析、总结、音频总结、拜访记录总结。当用户提及「分析录音」「看看录音数据」「最近的录音」「通话记录」且意图为批量统计/分析时触发。仅出现「录音」或「拜访」时需结合上下文,若仅查看单条详情则不触发。
- 两个页面协议、域名、端口不完全一致(比如
http://a.com和https://a.com是不同源) - 不是从源页面跳转过去,而是新开标签页(
window.open()或手动输入 URL),新 tab 的sessionStorage是干净的 - 目标页面脚本执行太早(比如放在
里),DOM 还没加载完就去读,建议包裹在DOMContentLoaded或document.addEventListener('DOMContentLoaded', ...)中 - 源页面调用了
sessionStorage.clear()或removeItem()却没注意时机(例如在跳转前误删)
和 localStorage 混用时容易忽略的关键区别
两者 API 几乎一样,但行为差异直接影响数据生命周期和安全性判断。
-
localStorage持久存在,关浏览器也不丢;sessionStorage关闭当前 tab 就清空——别指望它“跨会话”保留 - 同一域名下,多个 tab 的
localStorage共享;但每个 tab 的sessionStorage完全隔离 - 存敏感信息(如 token、密码片段)时,
sessionStorage并不比localStorage更安全——两者都可被同源 JS 任意读写,都不能防 XSS - 若需加密,Web Crypto API 的
crypto.subtle.encrypt()必须配合每次生成新 IV,且密钥不能存进sessionStorage——这是最容易漏掉的硬伤
真正难的不是怎么写 setItem 和 getItem,而是判断“这个数据到底该不该走前端暂存”。一旦涉及身份凭证、支付上下文、未提交的用户隐私字段,就该立刻转向服务端 session 或短期 JWT,而不是在 sessionStorage 里加一层看似加密的幻觉。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










