你如何检查浏览器是否支持 webanimation API?

How do you check if webanimation API is supported in the browser?

有没有办法检查浏览器是否支持网络动画 API 这样我们就不需要加载网络动画 polyfill?

github 上的文档讨论了 Element.animate 和播放控制。我可以检查元素上的 $0.animate 但我不确定如何检查播放控件。这是检查我们是否需要 polyfill 的准确方法吗?

如果 Element.animate 存在,我认为假设播放控制也是合理的。

Chrome 最初在 Chrome 36 中提供 Element.animate 支持。它在 Chrome 39 中添加了播放控制,现在已经发货很长时间了(当前 Chrome 是 51).

Firefox 将发布 Element.animate,包括 Firefox 48 中的播放控件(目前处于测试阶段)。

我预计 Safari 或 Edge 都不会 Element.animate 没有 播放控制。

但是,规范中还有一些其他功能尚未由任何浏览器提供,例如 finished 承诺、effect 属性或附加动画(尽管某些这些功能在 Firefox Nightly/DevEdition 和 Chrome Canary 中可用)。如果您依赖这些功能中的任何一个,那么您可能仍然需要 polyfill。

此外,polyfill 应该在可用时回退到本机实现,但我想您是想完全避免下载 polyfill?

添加到@brianskold 回复中 - 我使用了:

if ('animate' in elementToAnimate) {
 // do something
} else {
 // fallback code 
}

这在 Chrome 和 Firefox 中有效,如果不支持则回退!

没有安全的检查方法,因为某些浏览器可能未完全实现 API 但仍实现 Element.animate

您可能想使用 polyfill 而不是检查,如果存在的话,它会下降到 API。

这个 polyfill 项目可能符合您的需要。我将它用于几个项目并且对它很满意: https://github.com/web-animations/web-animations-js