如何检测浏览器是否支持
freeze
和 resume
生命周期事件?
我查看了老忠实的JS库Modernizr,它似乎不支持他们的检测。
它们看起来非常有用,但根据 CanIUse,Safari 和 Firefox 目前不支持这些事件。
还有其他方法吗?
document.addEventListener('onfreeze', (event) => {
console.log('Frozen');
});
document.addEventListener('onresume', (event) => {
console.log('Resumed');
});
在源对象上查找
onxyz
成员是检测事件支持的一种历史悠久的方法。看起来它适用于这里:规范定义了onfreeze
和onresume
的Document
成员:
页面生命周期涉及以下添加:
partial interface Document { attribute EventHandler onfreeze; attribute EventHandler onresume; readonly attribute boolean wasDiscarded; };
因此
if ("onfreeze" in document)
应该告诉您环境是否支持 freeze
事件(对于 resume
也是如此,尽管它们可能都受支持,或者都不支持)。