jQuery div.offsetWidth 性能不佳

标签 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 初始化的性能

最佳答案

触发怪异模式是一件可怕、可怕、可怕的事情。
在怪异模式下,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/

关于jQuery div.offsetWidth 性能不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6225664/

相关文章:

javascript - jQuery 不在 Rails View 中运行

javascript - removeAttr 删除在 IE 中不起作用的标题

javascript - 如何根据每四个逗号将字符串拆分为数组?

css - 在网站中使用哪个字体文件?

mysql - 是否应该对包含具有一对一关系的大型 blob 的频繁访问的表进行规范化并将列拆分为两个表?

django - 如何评估Web服务器的性能?

asp.net - Internet Explorer 9 中奇怪的 Ajax/Jquery 行为

jquery - 使用 jquery 动态更改 "onclick"调用

performance - 尽管设置了索引,但简单的 MongoDB 查询非常慢

Android 4.3 屏幕 GPU 分析 - gfx 等待时间长