在所有主流浏览器中,GIF动画与javascript在同一线程上运行是真的吗?

在所有主流浏览器中,GIF动画与javascript在同一线程上运行是真的吗?,javascript,ajax,animated-gif,Javascript,Ajax,Animated Gif,我显示了一个动画GIF,它在AJAX请求进行时运行,并在脚本处理响应后停止 虽然这样做有效,但我注意到,当在我的脚本中处理来自请求的响应时(其中包含一些相当繁重的DOM更新),动画会冻结 我的研究使我相信,这是因为GIF的动画与javascript运行在同一线程上——浏览器是真正的单线程。这是否是当前所有主流浏览器(如Chrome、Firefox、Safari、IE)的正确解释 第二,为何要这样做?浏览器是否真的不可能为GIF动画指定一个线程,以便在执行javascript块时它们不会冻结 更新

我显示了一个动画GIF,它在AJAX请求进行时运行,并在脚本处理响应后停止

虽然这样做有效,但我注意到,当在我的脚本中处理来自请求的响应时(其中包含一些相当繁重的DOM更新),动画会冻结

我的研究使我相信,这是因为GIF的动画与javascript运行在同一线程上——浏览器是真正的单线程。这是否是当前所有主流浏览器(如Chrome、Firefox、Safari、IE)的正确解释

第二,为何要这样做?浏览器是否真的不可能为GIF动画指定一个线程,以便在执行javascript块时它们不会冻结

更新

这是一个有趣的页面。它讨论了使用纯CSS3动画。不过,它们在Firefox中仍然会冻结——也许很快FF就会解决这个问题。看起来我应该考虑使用CSS来制作动画,而不是使用GIF。

我想问题是(IMHO)在更新dom时,浏览器不会重新绘制页面,因此图像会冻结

试着在不改变dom的情况下做一些繁重的事情,gif应该是动画的(如果你的cpu很忙的话,应该是缓慢的),但不能冻结


如果它冻结了,您可以显式地为该工作创建一个新线程(使用webworker),但如果我没记错的话,您无法从webworker更改dom。

这可能是众所周知的,但CSS3在大多数现代浏览器中都有自己的线程。您应该能够在javascript中设置断点,并且仍然可以看到css动画正在运行。查看此链接以了解如何使用纯css设置精灵动画:


这不是很容易检查吗?调出web检查器,设置断点。我的猜测是否定的,但如果它真的是,也许它将有助于说服人们停止使用GIF,在这种情况下,也许它不应该被修复…是的,设置断点会阻止动画GIF的运行。那么,除了动画GIF,你还有什么选择呢?我自己没有,而且客户端软件中似乎也没有一种广泛支持的格式,它甚至无法与GIF可怕质量的稳定性相匹配,但你必须知道GIF格式本身(以及所有已知的渲染GIF的软件)已经非常过时了。我敢打赌,GIF总共夺走了我们很多千兆瓦的能量。并且在移动设备上运行dog slow以获得许多人不知道的任何非平凡分辨率,但PNG也可以设置动画:也有CSS3动画,但不确定它们运行在什么线程上。。。(例如,“font Aweasome”中的图标旋转