前端sessionStorage存储范围总结
href页面跳转,不打开新窗口,新页面和原有页面属于同一个session。
<!--href页面跳转,不打开新窗口。-->
<a href="new.html">新页面</a>
href添加了target='_blank'属性,打开新窗口。分以下两种情形:
1).target='_blank'
href添加了target='_blank'属性,因为打开的新窗口,所以新页面和原有页面不属于同一个session; 注意:最新的浏览器版本都默认rel='noopener'
<!--href页面跳转,打开新窗口。-->
<a href="new.html" target='_blank'>新页面</a>
2).target='_blank' 和rel='opener'
href添加了target='_blank'和rel='opener'属性,因为打开的新窗口,所以新页面和原有页面虽然不属于同一个session,但是新页面会复制原有页面的session属性;但是修改新页面的session属性值,不会影响原页面里的session。
<!--href页面跳转,打开新窗口, 但是添加了ref='opener'-->
<a href="new.html" target='_blank' rel='opener'>新页面</a>
使用window.open打开新页面,因为是打开的新窗口,所以新页面和原有页面虽然不属于同一个session,但是新页面会复制原有页面的session属性;但是修改新页面的session属性值,不会影响原页面里的session。
window.open('new.html');
手工打开新标签,也属于打开的新窗口,所以新页面和原有页面不属于同一个session;
由于\$router.push和\$router.replace都不会打开新窗口,因此新页面(路由)和原页面(路由)属于同一个session;
本质上讲,浏览器只要打开新窗口就是新会话,那么新窗口是否会复制原有窗口的会话(session),取决于其具体的打开方式。