更新: 此错误已被至少另外两个确认。即使您没有阅读我的完整帖子 - 如果您正在阅读本文并使用 JQuery 1.3.1,那么如果您依赖于要在 DOM 完成时但在页面图像加载之前执行的任何处理程序,请停止使用它.
更新2 :感谢Tom(用户 id 20!)在 jQuery 错误跟踪器上发布票证链接。
更新 3 - 2009/01/28:问题已得到妥善解决(对于那些无法恢复到 1.2.6 的用户)。对于当前使用 1.3.1 并需要立即修复的任何人,您可以阅读下面接受的答案以获取指导。谢谢约翰。
我刚刚升级到 JQuery 1.3.1,我花了几个小时才意识到我心爱的
$(function( ) { ... }
语法现在在执行函数体之前等待整个页面加载(包括图像)。尝试集成雅虎菜单时,我看到了奇怪的行为。(幸运的是,我的页面上有一些加载缓慢的图像,这让我意识到了这个问题)!
我制作了一个测试文件,因为我认为发生了更复杂的事情,但即使使用这个简单的文件,我仍然有相同的症状。
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script>
<script>
$(function() {
alert("Ready");
});
</script>
</head>
<body>
<img src="<PATH_TO_DYNAMIC_IMAGE>_1.jpg" />
<img src="<PATH_TO_DYNAMIC_IMAGE>_2.jpg" />
<img src="<PATH_TO_DYNAMIC_IMAGE>_3.jpg" />
<img src="<PATH_TO_DYNAMIC_IMAGE>_4.jpg" />
</body>
不同版本的 JQuery 有不同的结果:
- 在 1.2.6 版中发生的情况是警报框立即显示,然后我看到它后面加载的图像(预期和记录的行为)。
- 在 1.3.1 版本中发生的是图像全部加载,然后才会显示警告框。
这是怎么回事!这是一个新功能(我无法想象为什么)还是一个错误?
重要提示:这似乎只是 IE 中的问题,而不是 Firefox
抱歉,我没有可公开访问的动态图像文件,以便其他人更容易看到。如果你想测试一下,我建议使用从谷歌图像中随机挑选的大图像文件并清除缓存。