jQuery div.offsetWidth性能不佳

时间:2011-06-03 10:07:02

标签: jquery performance

我对jquery有一个奇怪的问题。我们正在尝试在我们很老的Web应用程序中使用jQuery 1.5.1。它仅支持IE,并且始终以怪异模式呈现(没有doctype元素)。

除了一个问题,jQuery工作正常。我注意到一个功能运行缓慢。使用未压缩的版本我发现问题出在jQuery初始化函数中。以下代码执行约2秒

        div.style.width = div.style.paddingLeft = "1px";
    body.appendChild( div );
    jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;

    if ( "zoom" in div.style ) {
        // Check if natively block-level elements act like inline-block
        // elements when setting their display to 'inline' and giving
        // them layout
        // (IE < 8 does this)
        div.style.display = "inline";
        div.style.zoom = 1;
        **jQuery.support.inlineBlockNeedsLayout = div.offsetWidth === 2;**

粗线是问题。

由于某种原因,div.offsetLength在设置显示和缩放属性后需要大约2秒钟才能执行。第一次调用此属性(第3行)的工作很快。

我想知道是什么导致了这个问题,以及如何提高jQuery初始化的性能

1 个答案:

答案 0 :(得分:1)

触发怪癖模式是一件可怕,可怕,可怕的事情 在quirks模式下,jQuery被迫使用替代方法与DOM交互,几乎肯定是IE中速度问题的原因。

http://lostechies.com/johnteague/2009/09/15/jquery-does-not-like-quirksmode/
http://blog.yourinnovative.com/the-development-lab/jquery-quirks-mode-in-ie6/