面试官:sessionStorage可以在多个Tab之间共享数据吗?

65 篇文章 2 订阅

问题1:“你知道localStorage和sessionStorage有什么区别吗?”

localStorage的数据是持久化的,只要我们不主动清除它,它就会一直存在。

关闭选项卡/窗口会结束会话并清除 sessionStorage 中的对象。

问题二:同一个网站下localStorage可以共享数据吗?

数据可以在同一网站下的不同选项卡或窗口之间共享.


// Let's try to set a name in window 1 page 1
localStorage.setItem('name', 'fatfish')
// We try to read the current name in window 2 page 2
localStorage.getItem('name') // fatfish

问题3:sessionStorage可以在多个选项卡之间共享数据吗?”

什么是会话存储?

来自 MDN:只读 sessionStorage 属性访问当前源的会话存储对象。sessionStorage与localStorage类似;不同之处在于,localStorage 中的数据不会过期,而 sessionStorage 中的数据会在页面会话结束时被清除。

每当文档加载到浏览器的特定选项卡中时,就会创建一个唯一的页面会话并将其分配给该特定选项卡。该页面会话仅对特定选项卡有效。

只要选项卡或浏览器打开,页面会话就会持续,并且在页面重新加载和恢复后仍然存在。

在新选项卡或窗口中打开页面会创建一个具有顶级浏览上下文值的新会话,这与会话 cookie 的工作方式不同。

使用相同的 URL 打开多个选项卡/窗口会为每个选项卡/窗口创建 sessionStorage。

复制选项卡会将选项卡的 sessionStorage 复制到新选项卡中。

请注意第三点!或者我们可以在这里找到答案!

假设我们在https://medium.com/page/1中写了这样一段代码:


btn.addEventListener('click', () => {
  window.sessionStorage.setItem('name', 'fatfish')
  window.open('https://medium.com/page/2')
})

 我可以在 https://medium.com/page/2 获取名称值吗?


console.log(window.sessionStorage.getItem('name')) // null or fatfish?

是的,答案就是fatfish。那么,我们确定 sessionStorage 可以在多个选项卡之间共享数据吗?

最终答案

让我们尝试再次继续执行 https://medium.com/page/1 上的一段代码。

window.sessionStorage.setItem('name', 'medium')
window.sessionStorage.setItem('age', '1000')

如果sessionStorage可以在不同窗口或选项卡之间共享数据,那么https://medium.com/page/2也可以获取name和age的最新值

console.log(window.sessionStorage.getItem('name')) // 111
console.log(window.sessionStorage.getItem('age')) // null

所以,我们可以得出结论,sessionStorage不能在多个窗口或选项卡之间共享数据,但是,当通过window.open或链接打开新页面时,新页面会复制上一个页面的sessionStorage。

英文 | https://fatfish.medium.com/interviewer-can-sessionstorage-share-data-between-multiple-tabs-c30983c61501

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值