javascript - "animationend"有时不触发

标签 javascript html css css-animations

我有一个 CSS 动画,它应用到带有 CSS 类的 HTML 元素。我还有一个附加到 animationend 的事件监听器(这是一个现代 Windows 应用程序,因此浏览器仅为 IE11)。我看到的是,有时事件被触发,有时却没有。无论事件触发如何,我总能在视觉上看到它的动画效果。对我来说,这看起来像是某种竞争条件。

我在网络上进行了搜索,试图了解是什么原因导致此事件没有被触发,但我没有找到任何令人满意的结果。我在 MDN 上找到了以下内容:

Note: The transitionend event doesn't fire if the transition is aborted because the animating property's value is changed before the transition is completed.

更新 1:transitionendanimationend 无关,因此此信息无关。

我不确定这是否适用于 CSS 动画。有没有人知道是什么原因造成的?如果有任何事件可以检测到动画已中止,那也可能是一种有用的解决方法。

UPDATE2:我当前使用的解决方法:

element.addEventListener("animationstart", function () {
    setTimeout(function () {
        // do stuff
    }, animationDuration);
});

最佳答案

有没有可能你的动画没有结束?

查看animationcancel 事件的文档:
https://developer.mozilla.org/en-US/docs/Web/Events/animationcancel

但是,浏览器支持似乎参差不齐(HTMLElement.prototype 中的“onanimationcancel” 在 Chrome 67 中为我返回 false)。

目前看来使用setTimeout hack 可能是必要的。

关于javascript - "animationend"有时不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29855929/

相关文章:

javascript - 使用 Javascript 将 JSON 对象名称传递给函数

javascript - 如何从 ember save 方法获取 JSON 响应

javascript - 如何从基于模板的网站打印条形码?

javascript - 如何确定 Javascript 中项目网格中选择范围之间的重叠

html - 子菜单 :before transition

java - 允许在 jsoup 选择器中缺少父级

html - 如何最好地构建一个考虑到可访问性的定义列表

javascript - Chartjs 未显示所有数据点

css - Bootstrap 嵌套列

html - 带指针事件的 iframe :none hijacks clicks in Safari on iOS