我使用 JQuery 和许多拖放元素开发了一个网站,效果非常好。
然而,在 IE9 上,当动态加载(使用 .load())并显示大量拖放元素时,浏览器总是消耗少量 CPU(~10%)(用于刷新?),即使没有任何内容用户长时间不触摸鼠标或滚动页面即可完成此操作。
我没有任何计时器,Chrome 和 Safari 上的行为正常。
以下是上下文以及我在测试后发现的内容:
Context
在我的主网页中,我使用 a 将用户视图加载到 div 中加载()函数 http://api.jquery.com/load/。加载的视图包含多个带有可拖动元素的容器。这些容器是可放置的,并且在每次放置事件后也使用 load() 函数进行刷新。
- 如果我插入 50
<br>
标签位于我的网页的第一个位置,如果不在我的页面中滚动,则不会显示图形元素:我的 CPU 利用率 = 0%
- 当我滚动以仅显示包含图形元素的视图的一半时,我的 CPU 利用率 = 10%
- 当我的所有图形元素显示时:我的 CPU 利用率 = 20%
- 当我减小窗口大小时:我的 CPU 利用率根据窗口大小而降低
任何人都可以解释为什么吗?给我一个建议吗?是不是因为JQuery事件太多了?有什么解决方案可以监视我的代码的哪一部分正在占用 CPU 资源吗?
欢迎任何建议!
Edit
当我删除加载视图中的所有 JQuery 事件(单击、鼠标悬停等)和所有 JQueryUI 元素声明(.draggable()、.droppable())时,CPU 利用率仍然存在。
但请记住,视图始终是使用 .load() 函数动态加载的。仅供参考,我还尝试使用 $.post() 加载我的视图。
今天早上我尝试使用新的 JQuery 版本 1.8.0 和 JQueryUI 1.8.22,但这并没有改变任何东西。
jQuery 使用计时器来管理动画。
计时器每 13 毫秒运行一次。
您可以下载开发jquery代码,查找“interval: 13”并将其更改为例如interval: 150。
EDIT
从 JQuery 1.4.3 开始,jQuery.fx.interval
可以操作属性来调整动画运行的每秒帧数。默认值为 13 毫秒。
http://api.jquery.com/jQuery.fx.interval/ http://api.jquery.com/jQuery.fx.interval/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)