是否有一个浏览器存储只能由创建它的页面使用?
我正在制作一个 TamperMonkey 脚本来自动化我的工作。当打开来自特定域的页面时会触发它。然后,它会在所述页面中找到特定链接(同一域)并在同一选项卡中将其打开。如果新打开的页面符合条件,则返回上一页(需手动检查)。如果没有,那么它就会自行关闭。
我使用 localStorage 来标记页面是否尝试执行此检查。否则,当加载原始页面并陷入循环时,脚本将重新打开链接。
当只有一个选项卡运行时,脚本运行顺利。但当我运行多个选项卡(全部在同一域中)时,它经常失败。我猜测每个选项卡都可以访问相同的 localStorage,从而扰乱循环检查。无论如何,我还没有找到通过相同的脚本为每个选项卡的 localStorage 提供唯一的名称。
因此,我需要一个浏览器存储,即使在同一域中打开新的 url 之后,该选项卡也可以使用该存储,但具有相同域的另一个选项卡则无法使用该存储。
您可以使用Window.sessionStorage https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage以此目的。
Example
// 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
根据MDN https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage:
sessionStorage 属性允许您访问当前源的会话存储对象。 sessionStorage 与 Window.localStorage 类似,唯一的区别是 localStorage 中存储的数据没有设置过期时间,而 sessionStorage 中存储的数据会在页面会话结束时被清除。只要浏览器打开,页面会话就会持续,并且在页面重新加载和恢复后仍然存在。在新选项卡或窗口中打开页面将导致启动新会话,这与会话 cookie 的工作方式不同。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)