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

Is it true that GIF animation runs on the same thread as javascript in all mainstream browsers?

本文关键字:线程 运行 是真的吗 同一个 所有主 浏览器 动画 GIF javascript      更新时间:2023-09-26

我展示了一个动画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动画一个精灵:

http://blog.teamtreehouse.com/css-sprite-sheet-animations-steps