相关疑难解决方法(0)

浏览器会话存储.标签之间共享?

我在我的网站中有一些值,我希望在浏览器关闭时清除,我选择sessionStorage来存储该值,当选项卡关闭时清除它并在用户按f5时保持存储,但如果用户在不同的选项卡中打开一些链接这个值不可用.我如何在我的应用程序之间共享所有浏览器选项卡之间的sessionStorage值?

用例:将值放在某个存储中,在所有浏览器选项卡中保持该值可访问,如果所有选项卡都关闭则清除它.

if (!sessionStorage.getItem(key)) {
    sessionStorage.setItem(key, defaultValue)
}
Run Code Online (Sandbox Code Playgroud)

javascript cross-browser session-storage

123
推荐指数
5
解决办法
13万
查看次数

为什么 sessionStorage 跨多个选项卡保留?

从Window.sessionStorage 文档:

在同一 URL 上打开多个选项卡或窗口会为每个选项卡或窗口创建 sessionStorage

https://stackblitz.com/edit/session-storage?file=index.js

输入您的姓名并点击“商店”

您的姓名现在存储在 sessionStorage 中,并且页面视图已更新。

sessionStorage.setItem('name', nameInput.value);
nameSpan.innerHTML = nameInput.value;
Run Code Online (Sandbox Code Playgroud)

现在点击“在新标签页中打开”

这将通过创建指向当前页面的链接元素并调用click()它来在新选项卡中打开页面

const link = document.createElement('a');
link.target = '_blank';
link.href = '/';
link.setAttribute('visibility', 'hidden');
document.body.appendChild(link);
link.click();
link.remove();
Run Code Online (Sandbox Code Playgroud)

如你所见,你的名字还在

为什么会发生这种情况,有没有办法用空 sessionStorage 打开新选项卡(不清除当前选项卡 sessionStorage)?

在 Chrome 75 和 Firefox 66 上对此进行了测试

不,它与 stackblitz 无关,在 localhost 上的行为方式相同

html javascript firefox google-chrome

8
推荐指数
1
解决办法
3571
查看次数

在Internet Explorer的新选项卡中打开链接时,SessionStorage不为空

我需要在每个打开的浏览器选项卡上(在javascript对象中)都有一些唯一的ID.必须通过请求保存Id,我决定使用sessionStorage.

当我在浏览器中打开新页面时效果很好.
但是,当我通过鼠标右键单击链接并在IE 11中选择"在新选项卡中打开链接"时 - sessionStorage不为空.所以我对新id的期望失败了.

Chrome以另一种方式工作,sessionStorage为空.

有谁知道如何解决IE的这个问题?

javascript internet-explorer session-storage

5
推荐指数
1
解决办法
2929
查看次数