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

时间:2009-01-25 10:11:26

标签: jquery jquery-1.3

更新的 此错误已被至少两个其他人确认。即使您没有阅读我的完整帖子 - 如果您正在阅读本文并使用JQuery 1.3.1,那么停止使用它如果您依赖于您想要在DOM完成时执行的任何处理程序但是在页面的图像加载之前。

Update2 :感谢Tom(用户ID 20!)在jQuery错误跟踪器上发布link to the ticket

Update3 - 2009/01/28:问题已得到妥善解决(对于那些无法恢复为1.2.6的人来说)。对于目前使用1.3.1且需要立即修复的任何人,您可以阅读下面接受的答案以获取方向。谢谢约翰。


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

$(function( ) {  ... }

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

我制作了一个测试文件,因为我觉得有些事情比较复杂,但即使这个简单的文件,我仍然有同样的症状。

<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

抱歉,我没有一个公开可访问的动态图像文件,以便其他人更容易看到这一点。如果你想测试它我建议使用从谷歌图像中随机挑选的大图像文件并清除你的缓存。

4 个答案:

答案 0 :(得分:57)

这是由于jQuery错误#2614和#3880 - 在1.2.6和1.3中IE中的就绪代码存在明确问题 - 现在1.3中存在一组不同的问题0.1。

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

此处可以找到与问题相关的故障单(如果您发现修复程序的其他问题,请重新打开故障单并发布到上面的jquery-dev线程):
http://dev.jquery.com/ticket/3988

我刚刚在SVN rev 6170中找到了解决方法。

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

对于解决问题的延迟表示抱歉 - 本周旅行。

答案 1 :(得分:4)

有些东西无法进行单元测试。刚刚在IE6 + 7和1.3.1中确认。神圣的地狱,多么巨大的回归。

那么,你有时间报告这个吗?刚检查过,它不是1.3.1的已知错误。

答案 2 :(得分:4)

Here's an update of the ticket I submitted。似乎@Webdawson已将样本页面附加到故障单。

答案 3 :(得分:3)

是的,我添加了一个例子,它显然是IE6中的一个错误。 7(我没有在其他IE版本中测试它)。似乎1.3.1版本有很多错误。 :(

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