检测页面上的任何内容是否正在动画化
Detecting if Anything on the Page is being Animated
我知道:animated
选择器,但目前我遇到了(可能是几个之一)较旧的IE的性能问题(去图)。我觉得这可能是我测试ANY页面动画的潜在方式。
目前我正在循环通过一个间隔,核心测试是 $('*').is(':animated')
。这个 $('*')
是我担心的…但因为我不知道确切的div/等是我的插件下面动画,我不知道怎么做!
var testAnimationInterval = setInterval(function () {
if ( ! $('*').is(':animated') ) { // all done animating
clearInterval(testAnimationInterval);
animationsFinished(); // callback function
}
}, 300);
function animationsFinished() {
// do whatever
}
有没有人找到更好/不同的方法来做这件事?尤其是在性能方面?
所有jQuery动画计时器都存储在数组$.timers
中。一个选项是检查$.timers
属性的length
是否大于0:
if ($.timers.length > 0) {
// something is animating
}
我认为在动画开始时将元素推送到数组中,并在动画完成后将其从数组中删除会更有效。或者更好的做法是,在动画开始时增加一个变量,并在动画完成时减少1。如果变量为0
,则当前不应该运行动画。
var animatingElements = 0;
function animationStart(){ // Add this function in your animation start events;
animatingElements++;
}
function animationEnd(){ // Add this function in your animation end events;
animatingElements--;
}
if (animatingElements === 0) {
clearInterval(testAnimationInterval);
}
当然,这是假设您可以访问开始/捕获动画结束的代码。
相关文章:
- CSS3卡翻转动画,检测是否不支持
- 是否有“”的键盘快捷键;暂停动画”;Chrome开发工具中的功能?(F12)
- 是否可以调整Adobe Edge动画的大小
- 是否可以设置柔盒插入、移除和项目位置的动画
- Raphael JS中的动画字体大小是否有流畅的转换可能性
- 试图弄清楚某个网站的文本动画是否是用某个库或插件完成的
- 悬停时触发的 jQuery 动画是否可以切换
- 是否可以在可见性隐藏元素上对幻灯片进行动画处理
- GWT 动画在从 websocket 调用时是否运行
- 是否可以将动画与 jQuery 中的属性一起使用
- 是否可以对 Jquery 进行动画处理.CSS 背景更改
- jQuery - 检测 CSS 动画是否结束
- CSS3 关键帧动画是否比属性过渡更平滑?
- setInterval() 是否使动画在加载时开始
- JavaScript -- Unity 检查动画是否已结束
- 是否可以从javascript打印Flash动画的屏幕
- 在 React Native 中 - 是否可以在通过道具接收的动画值上添加侦听器
- 是否可以在单击时将类(特别是其动画)重置回其初始状态
- 是否可以在 Angular 指令中使用 jQuery 来执行动画
- 是否可以禁用dojo蜘蛛图动画