代码之家  ›  专栏  ›  技术社区  ›  Carcigenicate

“冻结”事件突然停止发出

  •  0
  • Carcigenicate  · 技术社区  · 1 年前

    我们有一个对标签冻结高度敏感的SPA PWA。因此,我们需要做出回应 freeze 事件。

    我设置了一个监听器:

    document.addEventListener('freeze', (event) => {
        console.log('Tab Frozen', event);
        // Do freeze handling here
    });
    

    这奏效了一点,然后突然不知从哪里冒出来, 冻结 事件停止触发。我通过将标签放入一个组中,然后折叠标签组来诱导冻结,这会导致Chrome和Edge冻结该组。

    我已经确保可以访问此侦听器,并且没有取消注册事件处理程序。

    可能的原因是什么 冻结 突然停止发射的事件?

    1 回复  |  直到 1 年前
        1
  •  0
  •   Carcigenicate    1 年前

    事件没有被触发,因为标签没有被正确冻结。

    事实证明,该标签已被添加到 "a unit of related browsing contexts" 使用另一个选项卡,这可以防止该选项卡在另一个处于活动状态时被冻结。

    我不知道这是怎么发生的。当你“复制标签”从第一个标签创建第二个标签时,可能会发生这种情况,但我不相信我在这里这样做了。它们似乎在创造后就“联系”起来了。

    如果你不能得到一个 freeze 火灾事件:

    1. 检查中的“生命周期状态”列 chrome://discards / edge://discards 为了确保该标签确实已被冻结。
    2. 如果没有,并且您的网站有多个打开的选项卡,请关闭一个,然后独立于第一个重新打开(不要“复制选项卡”)。如果您没有打开多个选项卡并且正在使用Edge,请确保您没有打开开发工具,因为这也可以防止冻结。在Edge中,您还可以从 discards 页面(Chrome目前不允许这样做)。
    推荐文章