我对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初始化的性能
答案 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/