共计 1014 个字符,预计需要花费 3 分钟才能阅读完成。
sessionStorage
属性容许你拜访一个,对应以后源的 sessionStorage 对象。
- 页面会话在浏览器关上期间始终放弃,并且从新加载或复原页面仍会放弃原来的页面会话。
- 在新标签或窗口关上一个页面时会复制顶级浏览会话的上下文作为新会话的上下文,这点和 session cookies 的运行形式不同。
- 关上多个雷同的 URL 的 Tabs 页面,会创立各自的
sessionStorage
。 - 敞开对应浏览器窗口(Window)/ tab,会革除对应的
sessionStorage
。
语法
// 保留数据到 sessionStorage
sessionStorage.setItem('key', 'value');
// 从 sessionStorage 获取数据
let data = sessionStorage.getItem('key');
// 从 sessionStorage 删除保留的数据
sessionStorage.removeItem('key');
// 从 sessionStorage 删除所有保留的数据
sessionStorage.clear();
对于 sessionStorage 的一些问题
1. 同样的 url 链接在浏览器的不同窗口能够共享 sessionStorage
的数据么?
不能够,尽管他们的域名什么都雷同,然而对于浏览器标签来说他们是不同的窗口,他们之间的数据是无奈进行沟通的。
2.sessionStorage
是否传递给不同的窗口?
能够。个别有两种形式,一种是标签关上,一种是 window.open 的形式关上。
-
标签的形式须要留神的是在 chrome 的 89 版本之后必须要带
rel="opener"
<!-- 在新版 chrome 无奈带过来 sessionStorage 的值 --> <a href="index.html" target = '_blank'> 跳转新页面 </a> <!-- 在新版 chrome 能够带过来 sessionStorage 的值 --> <a href="index.html" target = '_blank' rel="opener"> 跳转新页面 1 </a>
-
window.open 能够关上并且能够将 sessionStorage 带过来。
window.open('index.html')
3. 在新的窗口扭转新的 sessionStorage,老窗口的值会对应发生变化么?
不会,因为相当于是将老窗口以后的状态值深拷贝了一份给新窗口,之后再各自的窗口进行操作的时候是不会发生变化。
正文完
发表至: javascript
2021-04-06