浏览器标签存储?

Ray*_*fin 8 html javascript browser storage

是否有一个浏览器存储只能由创建它的页面使用?

我正在制作一个TamperMonkey脚本来自动化我的工作.它是在打开特定域的页面时触发的.然后,它将在所述页面中找到特定链接(相同域)并在同一选项卡中打开它.如果新打开的页面与条件匹配,则它将返回上一页(手动检查).如果没有,那么它将自行关闭.

我使用localStorage标记页面是否已尝试执行此检查.否则,脚本将在加载原始页面并在循环中捕获时重新打开链接.

只运行一个选项卡时,脚本运行顺畅.但是当我运行多个选项卡(全部在同一个域中)时,它经常会失败.我猜每个选项卡都可以访问相同的localStorage,从而搞乱循环检查.我还没有找到通过相同的脚本为每个选项卡的localStorage提供一个唯一的名称.

因此,我需要一个浏览器存储,即使它在同一个域中打开了一个新的URL,但是在具有相同域的另一个选项卡中无法使用,也可以由选项卡使用.

Moh*_*bas 10

您可以使用Window.sessionStorage来实现此目的.

// Store in `name` in the current tab

sessionStorage.setItem('name', 'Some Name');

// Get `name` from sessionStorage

var name = sessionStorage.getItem('name');


alert(name); // Some Name
Run Code Online (Sandbox Code Playgroud)

MDN称:

sessionStorage属性允许您访问当前源的会话存储对象.sessionStorage类似于Window.localStorage,唯一的区别是当localStorage中存储的数据没有到期设置时,存储在sessionStorage中的数据在页面会话结束时被清除.只要浏览器处于打开状态,页面会话就会持续,并且会在页面重新加载和恢复后继续存在.在新选项卡或窗口中打开页面将导致启动新会话,这与会话cookie的工作方式不同.

资源

  • @RayArifin 如果使用`sessionStorage`,`localStorage` 和`sessionStorage` 之间是有区别的,那么如果用户打开两个选项卡就没有问题。每个选项卡都有自己的`sessionStorage`。 (3认同)