我们有一个对标签冻结高度敏感的 SPA PWA。因此,我们需要响应
freeze
事件。
我设置了一个监听器:
document.addEventListener('freeze', (event) => {
console.log('Tab Frozen', event);
// Do freeze handling here
});
这工作了一段时间,然后突然不知从何而来,
freeze
事件停止触发。我通过将选项卡放入一个组中,然后折叠选项卡组来引发冻结,这会导致 Chrome 和 Edge 冻结该组。
我已确保已到达该侦听器,并且没有任何内容取消注册事件处理程序。
什么会导致
freeze
事件突然停止发出?
该事件没有被触发,因为选项卡没有被正确冻结。
事实证明,该选项卡以某种方式与另一个选项卡一起添加到了“相关浏览上下文的单元”,这防止了该选项卡在另一个选项卡处于活动状态时被冻结。
我不知道这是怎么发生的。当您“复制选项卡”以从第一个选项卡创建第二个选项卡时,可能会发生这种情况,但我不相信我在这里这样做了。它们似乎在创作后就变得“有联系”了。
如果您无法触发
freeze
事件:
chrome://discards
/edge://discards
中相关选项卡的“生命周期状态”列,以确保它确实被冻结。discards
页面“人为地”引发冻结(Chrome 目前不允许这样做)。