【问题标题】:Making DiveIntoPython3 work in IE8 (fixing a Javascript performance issue)使 DiveIntoPython3 在 IE8 中工作(修复 Javascript 性能问题)
【发布时间】:2009-09-23 20:56:10
【问题描述】:

我正在尝试解决在 IE8 上使用 Dive Into Python 3 的性能问题。在 IE8 中访问this page,片刻之后,您将看到以下弹出窗口:

alt text http://dl.getdropbox.com/u/87045/permalinks/dip3-ie8-perf.png

我在j/dip3.js中将罪魁祸首追查到了这一行

... find("tr:nth-child(" + (i+1) + ") td:nth-child(2)");

如果我禁用它(并立即从函数返回),“停止执行此脚本?”对话框不会出现,因为页面现在加载速度相当快。

我不是 Javascript/jquery 专家,所以我向各位开发者询问为什么这个查询让 IE 变慢。有解决办法吗?

编辑:您可以下载entire webpage (980K) 进行本地查看/编辑。

【问题讨论】:

    标签: javascript jquery performance internet-explorer internet-explorer-8


    【解决方案1】:

    这似乎需要一些重写。

    nth-child 是一个缓慢的操作。您应该通过生成表中的 TD 和 refs 集合(dip3.js 第 183 行)中的元素通用的类或 id 来实现当前功能。然后:

    refs.each(function(i) {
      var a = $(this);
      var li = a.parents("pre").next("table").find("td."+a.attr('class'));
      li.add(a).hover(function() { a.css(hip); li.css(hip); },
      function() { a.css(unhip); li.css(unhip); });
    });
    

    【讨论】:

      【解决方案2】:

      此弹出消息具有误导性 - 它实际上并不意味着 IE 运行缓慢,而是执行的脚本语句数已超过某个阈值。即使脚本执行得非常快,如果超出限制,您仍然会看到此消息。摆脱它的唯一方法是减少执行的语句数量或编辑注册表。

      http://support.microsoft.com/kb/175500

      我发现 Microsoft 对此的实施非常烦人。它会假设您的计算机速度。

      【讨论】:

        猜你喜欢
        • 2013-09-17
        • 1970-01-01
        • 1970-01-01
        • 2011-05-18
        • 1970-01-01
        • 1970-01-01
        • 2016-03-10
        • 2011-01-05
        • 1970-01-01
        相关资源
        最近更新 更多