在IE7中Jquery非常慢

时间:2009-07-09 03:46:16

标签: jquery debugging internet-explorer-7 scripting performance

摘要

jquery用于通过get()调用检索搜索结果。渲染大量结果时没有问题,但是当渲染部分结果时,IE7会在渲染前持续挂起5-30秒。

问题

jquery中的get()调用成功执行。数据上没有eval()或urlencode或解码,因为数据是html。通过

将数据替换为大内容区域
$('#content').html(data);

#content内,有一些隐藏的div包含要移到#content之外的另一个内容的内容。 (这些是通过ajax检索的搜索结果,并且需要在另一部分更新面包屑)

$('#breadcrumb').html($('#content #breadcrumbcontainer').html());

以上在Firefox和其他浏览器中运行良好。

在没有脚本调试器的情况下使用IE 7.0.6001.18000在Vista计算机上进行测试在所有情况下都很快且正常。

使用带有MS脚本调试器的7.0.5730.11的XP测试在很多情况下都很慢。我只能在这一点上猜测 - 看起来它与

有关
  1. 正在安装脚本调试程序
  2. XHTML严格无效
  3. 由一些模糊的时间引起 - 我在这里看到的使用setTimeout()
  4. 建议的修复
  5. 或许需要jquery队列?
  6. 上述
  7. 的某些组合

    可以提供更多的代码,但是在IE7中没有脚本调试器的情况下,性能非常糟糕(渲染时间为30秒)真是令人困惑。

    对于原因的任何建议显然都会受到赞赏。

    - 更新 -

    tskmanager现在显示iexplorer.exe在空闲时的CPU使用情况。 只是挂起,就像暂停一样。

    - 更新两个 -

    已经确认IE7没有微软脚本调试器,IE7很慢

      

    范围:4秒到2:19   平均:33秒   中位数:18秒   标准差:37秒

1 个答案:

答案 0 :(得分:1)

问题来自于我省略的事实 - 这是每个搜索结果都包含一个flash对象。移除flash对象使速度与FF相当。

现在使用swfobject在$(document).ready()之后加载了闪存,问题已经消失。

行为不一致,因为IE7会缓存flash对象 - 所以有时性能会正常。