【发布时间】:2011-04-08 00:25:08
【问题描述】:
我很难解释为什么下面的代码在 IE9 中比在 IE8 中运行慢!
这是一些测试代码,在 OS X、WinXP 和 Win7 plus IE7 和 8 上的(最新)FF/Chrome/Safari 中大约半秒内顺利运行(为简单起见,我删除了使其在 IE6 中工作的调整)。
由于某种原因我无法解释,在 IE9 中它很糟糕,又慢又笨重。减少 setTimeout 的时间使它更快一点,但同样生涩。
我已经尝试删除和基准测试一些可能是阻塞点(例如 Math.min ......所有都没有改变。
我很难过...谁能指出我正确的方向?...最好是不需要浏览器嗅探的?
这是测试代码...
<div id = 'panel' class='noShow' style='background-color: #aaa;'>
<div id = 'wrapper' class='slideWrapper'>
<p>xxxxxxxxxxx</p><p>xxxxxxxxxxx</p><p>xxxxxxxxxxx</p><p>xxxxxxxxxxx</p><p>xxxxxxxxxxx</p><p>xxxxxxxxxxx</p><p>xxxxxxxxxxx</p><p>xxxxxxxxxxx</p><p>xxxxxxxxxxx</p><p>xxxxxxxxxxx</p>
</div>
</div>
<script type = 'text/javaScript'>
var e = document.getElementById('panel');
var w = document.getElementById('wrapper');
w.style.overflow = 'hidden';
w.style.height = '1px';
var sh = w.scrollHeight;
show();
function show()
{
setTimeout(function()
{
w.style.height = Math.min(sh, (w.offsetHeight + Math.ceil(sh/15))) + 'px';
if(
(w.offsetHeight < sh)
)
{
show(e);
}
else
{
w.style.height = 'auto';
}
}, 20);
}
</script>
【问题讨论】:
标签: javascript internet-explorer-9