删除所有选项卡的选项卡关闭时的 sessionStorage 属性
Posted
技术标签:
【中文标题】删除所有选项卡的选项卡关闭时的 sessionStorage 属性【英文标题】:Remove sessionStorage property on tab close for all tabs 【发布时间】:2020-10-17 06:02:50 【问题描述】:我对 .NET 开发非常陌生,并且正在开发一个用 ASP 编写的带有 Web 表单的应用程序。该应用程序有一个带有表格的页面,当单击表格行时,它会打开一个新选项卡。新选项卡有一个表单,其中包含来自单击的行的预填充数据。我使用 sessionStorage 完成了这项工作。
现在我想编写一些 JS,当仅关闭表单选项卡时,从两个选项卡的 sessionStorage 中删除项目。我尝试了以下方法,但是当我关闭表单选项卡并在表格选项卡中检查 sessionStorage 时,该属性仍然存在。有什么想法吗?谢谢,有什么帮助!
以下代码在 .aspx 文件的内容页脚中运行,我在该文件中拥有所有其他工作的 JS:
<asp:Content ID="Content3" ContentPlaceHolderID="contentfooter" runat="server">
<script>
window.addEventListener('unload', (e) =>
sessionStorage.removeItem('rowDataJSON');
);
</script>
</asp:Content>
【问题讨论】:
javascript 需要用<script></script>
标签括起来。
感谢@EduardoAlmeida。它是。我只是忘记在问题中将标签添加到此代码 sn-p 中。
【参考方案1】:
您不能为此使用 sessionStorage。因为来自MDN
在新选项卡或窗口中打开页面会使用***浏览上下文的值创建一个新会话,这与会话 cookie 的工作方式不同。
你可以使用localStorage
【讨论】:
感谢@abishek 的建议。那么我的问题是为什么当我在表格窗口的 sessionStorage 中保存一个属性然后从表单窗口的 sessionStorage 中检索该数据时它会起作用?如果这是两个单独的会话,那么我如何从另一个选项卡中的一个选项卡访问数据,因为我已经拥有并且它可以工作。 在第一种情况下,您必须先设置 sessionStorage,然后再设置新选项卡。新选项卡具有***浏览上下文,在本例中来自上一个选项卡。但是您在打开选项卡后所做的任何修改都不同步。简而言之,新标签页在打开时将具有前一个标签页的 sessionStorage,但从现在起任何标签页中的任何更改都不会反映在其他标签页中 切换到 localStorage 效果很好。谢谢阿比舍克。以上是关于删除所有选项卡的选项卡关闭时的 sessionStorage 属性的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Kendo UI TabStrip 中获取对当前选定选项卡的引用?