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

问题描述 投票:0回答:1

我们有一个对标签冻结高度敏感的 SPA PWA。因此,我们需要响应

freeze
事件。

我设置了一个监听器:

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

这工作了一段时间,然后突然不知从何而来,

freeze
事件停止触发。我通过将选项卡放入一个组中,然后折叠选项卡组来引发冻结,这会导致 Chrome 和 Edge 冻结该组。

我已确保已到达该侦听器,并且没有任何内容取消注册事件处理程序。

什么会导致

freeze
事件突然停止发出?

javascript event-handling
1个回答
0
投票

该事件没有被触发,因为选项卡没有被正确冻结。

事实证明,该选项卡以某种方式与另一个选项卡一起添加到了“相关浏览上下文的单元”,这防止了该选项卡在另一个选项卡处于活动状态时被冻结。

我不知道这是怎么发生的。当您“复制选项卡”以从第一个选项卡创建第二个选项卡时,可能会发生这种情况,但我不相信我在这里这样做了。它们似乎在创作后就变得“有联系”了。

如果您无法触发

freeze
事件:

  1. 检查
    chrome://discards
    /
    edge://discards
    中相关选项卡的“生命周期状态”列,以确保它确实被冻结。
  2. 如果不是,并且您的网站打开了多个选项卡,请关闭其中一个,然后独立于第一个选项卡重新打开它(不要“重复选项卡”)。如果您没有打开多个选项卡并且使用的是 Edge,请确保没有打开开发工具,因为这也可以防止冻结。在 Edge 中,您还可以从
    discards
    页面“人为地”引发冻结(Chrome 目前不允许这样做)。
© www.soinside.com 2019 - 2024. All rights reserved.