在执行document.ready之前,JQuery正在等待图像加载

更新:这个错误已经被至less两个人确认了。 即使你没有阅读我的完整文章 – 如果你正在阅读和使用JQuery 1.3.1,那么停止使用它,如果你依赖任何处理程序,当DOM完成,但在页面的图像加载之前,你想执行。

Update2 :感谢Tom (用户ID 20!)发布jQuery bug跟踪器上票据的链接 。

Update3 – 2009/01/28:问题已得到妥善解决(对于那些不能恢复到1.2.6的人)。 对于目前正在使用1.3.1并需要立即修复的人员,您可以阅读下面接受的答案以获取指导。 谢谢约翰。


我刚刚升级到JQuery 1.3.1,花了我几个小时才意识到我的爱人

$(function( ) { ... } 

在执行函数体之前,语法现在正在等待整个页面加载(包括图像)。 在尝试整合雅虎的菜单时,我看到了奇怪的行为 。 (幸运的是我的网页上有一些缓慢加载的图片,这让我意识到了这个问题)!

我做了一个testing文件,因为我觉得更复杂的事情正在进行,但即使是这个简单的文件,我仍然有相同的症状。

 <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版本中会发生什么警告框是立即显示,然后我看到加载在它后面的图像(预期和logging的行为)。
  • 在1.3.1版本中会发生什么,图像全部加载,只有这样才会显示警报框。

这是怎么回事! 这是一个新的function(我无法想象为什么)或错误?

重要提示:这似乎只是在IE浏览器,而不是Firefox的问题

对不起,我没有公开的dynamic图像文件,使其他人更容易看到这一点。 如果你想testing它,我build议使用从谷歌图像中随机挑选一个大的图像文件,并清除您的caching。

这是由于jQuery bug# 2614和# 3880 – 在1.2.6和1.3版本中,现成的代码存在明确的问题 – 现在在1.3.1中又出现了一些不同的问题。

更大的讨论可以在这里find:
http://groups.google.com/group/jquery-dev/browse_thread/thread/3abf45d3fd4d50fc

和这个问题相关的票可以在这里find(如果你发现修补程序的其他问题,请重新打开票并发布到上面的jquery-dev线程):
http://dev.jquery.com/ticket/3988

我刚刚在SVN rev 6170上find了这个修复。

我只是推出了一个新的夜晚,你可以使用,直到1.3.2最后出来:
http://code.jquery.com/nightlies/jquery-2009-01-28.js

对不起,延迟修复 – 本周旅行。

有些东西不能被unit testing。 刚刚在IE6 + 7和1.3.1中确认。 神圣的地狱,真是一个巨大的回归。

那么,你有时间来报告吗? 只是检查,它不是1.3.1的已知错误。

这里是我提交的票的更新 。 看起来@Webdawson已经将示例页面附加到了票证。

是的,我已经添加了一个例子,它显然是一个IE6&7中的错误(我没有在其他IE版本中testing过)。 看起来好像1.3.1版本有很多的错误。 🙁

以下是示例链接: http : //www.kollermedia.at/jquery_bug.html