gpt4 book ai didi

javascript - 是否有可能获得在页面重新加载时保持不变的选项卡(或窗口)标识符?

转载 作者:行者123 更新时间:2023-11-28 17:35:19 24 4
gpt4 key购买 nike

问题:

是否有 API 或方法来确定页面显示的当前选项卡/窗口的某种 id/uuid,该 id/uuid 在页面刷新时保持稳定?

为您提供更多背景信息,说明为什么这对我很重要:

我的用例是允许我的单页应用程序 (SPA) 同时在多个选项卡中打开。

现在我无法做到这一点,因为虽然当前状态保留在 localStorage 中的“currentModel”属性中,但不幸的是,并非所有 SPA 的 url 都是“独立的”。我所说的“自包含”是指 url 本身应该足以从后端(或 localStorage)重新加载该状态,因为它包含某种 id/uuid(我的 SPA 的这个缺陷在历史上一直在增长,我知道这不是什么HTML 本来是要使用的,但是由于有一个由 60 多名开发人员组成的团队正在开发该 SPA,您可以想象这不可能在一天内重构)。

所以我拥有的是一些像“/search”这样的网址,它们显示搜索表单,但也显示有关当前上下文的信息(即思考业务对象)。

现在,如果我想允许在多个选项卡中同时打开 SPA,我不能再使用简单的“currentModel”属性。相反,我需要将其设为一个 HashMap ,键为选项卡/窗口 id,以便在用户在其中一个选项卡中点击 F5/刷新时可以恢复选项卡的上下文。当然,这个 id 需要在页面重新加载时保持稳定。

我所知道的解决方法

  1. 编写可以访问选项卡的自定义浏览器扩展
  2. 更新网址以包含 SPA 引导时创建的“tab”id

最佳答案

window.name 属性(至少在现代 Firefox 和 Chrome 中)在 F5 页面重新加载期间保持其值。因此,代码可以检查 window.name 中的导航提示或任何其他可能有用的内容,以便在 URL 本身没有信息的情况下“确定其方位”。

因此,新加载的选项卡将能够检测到它实际上是新加载的,并且可以随时插入和更新窗口的 name 属性。重新加载后,如果代码看到窗口名称中已存在此类信息,则可以嗅探名称并从服务器请求其他内容(或执行其他操作)。

在相当有限的测试中,我已经能够将任何类型的字符串放入该属性中,但 IE 可能对名称必须具有某种特定形式(例如有效的标识符或其他东西)很挑剔。

关于javascript - 是否有可能获得在页面重新加载时保持不变的选项卡(或窗口)标识符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49283001/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com