【发布时间】:2012-08-03 18:01:34
【问题描述】:
我使用 JQuery 和许多拖放元素开发了一个网站,效果很好。
然而,在 IE9 上,当大量拖放元素被动态加载(使用 .load())并显示时,浏览器总是消耗少量 CPU(~10%)(用于刷新?)甚至如果用户长时间没有触摸鼠标或在页面上滚动没有任何操作。
我没有任何计时器,在 Chrome 和 Safari 上的行为还可以。
这是我在测试后发现的背景和发现:
上下文
在我的主网页中,我使用 load() function 将用户视图加载到 div 中。加载的视图包含几个带有可拖动元素的容器。这些容器是可放置的,并在每次放置事件后使用 load() 函数进行刷新。
- 如果我首先在网页中插入 50 个
<br>标签,则图形元素不会在我的页面中不滚动显示:我的 CPU 利用率 = 0% - 当我滚动以仅显示包含图形元素的一半视图时,我的 CPU 利用率 = 10%
- 显示所有图形元素时:我的 CPU 利用率 = 20%
- 当我减小窗口大小时:我的 CPU 利用率会根据窗口大小而降低
谁能解释为什么?给我一个建议?是因为很多 JQuery 事件吗?有什么解决方案可以窥探我的代码的哪一部分占用了 CPU 资源?
欢迎任何建议!
编辑
当我删除加载视图中的所有 JQuery 事件(单击、鼠标悬停...)和所有 JQueryUI 元素声明(.draggable()、.droppable())时,CPU 利用率仍然存在。
但请记住,视图总是使用 .load() 函数动态加载。仅供参考,我也尝试使用 $.post() 加载我的视图。
我今天早上尝试使用新的 JQuery 版本 1.8.0 和 JQueryUI 1.8.22,但这并没有改变任何东西。
【问题讨论】:
-
有一些关于 IE9 和 JQuery 的错误。比如bugs.jquery.com/ticket/9341 ..你用的是什么版本的jQuery?
-
感谢您的回复。我正在使用最后一个:JQuery 版本 1.7.2
-
我最近升级到了JQuery 1.8.2和JQuery UI 1.8.24,但是问题依旧存在。
标签: jquery jquery-ui internet-explorer-9