我在使用 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/