在所有主流浏览器中,GIF动画和javascript在同一个线程上运行,这是真的吗?
Is it true that GIF animation runs on the same thread as javascript in all mainstream browsers?
我展示了一个动画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相关文章:
- 在javaservlet doPost方法中启动线程时,无法返回异常消息
- javascript中的多线程
- Javascript支持多线程吗
- 如何在nodejs中创建线程池
- 在节点.js的多个线程中运行任务
- Do JS Reference Errors停止运行时线程执行
- Cordova应用程序在安卓系统上运行,但线程似乎在ios上冻结了;“由于页面加载而重置插件”;
- 是文件系统在 JavaScript 中的不同线程上运行
- 我可以在单独的线程中运行 UIWebView 吗?
- JavaScript 函数可以检查它是否在 Web Worker 线程上运行吗?
- 如何将包含在 eval 方法中的两个文件作为线程运行
- AJAX 以多线程方式运行
- 如何使 UI 线程连续运行
- 在所有主流浏览器中,GIF动画和javascript在同一个线程上运行,这是真的吗?
- Google V8引擎可以在不同的上下文、不同的线程中同时运行不同的javascript吗?
- 中断运行javascript脚本的java线程
- spin.js在IE和FF上长时间运行线程时停止旋转
- Canvas显然运行多个线程
- 浏览器脚本是否强制要求在单个线程上运行
- 是否可以在单独的线程中运行 HTML 5 视频