2012-08-12 67 views
0

这个想法是在图像加载完成时显示加载div并隐藏div。此代码适用于Chrome/Firefox,但不适用于IE。任何想法?隐藏()div不能在IE上工作,但在Chrome/firefox上工作

HTML文件

//image 
<img src="image.php" class="loading"> 

//loading tag 
<div id="loaddiv"> 
    <div id="loading_float"><img src="src/img/loading.gif"> 
    <br>Loading.. 
    </div> 
</div> 

JS文件

var imgs_count=0, imgs_loaded=0; 
$(function(){ 
$loading = $('.loading'); 
if($loading.size()>0){ 
    $loading.load(function(){ 
     $('#loaddiv').hide(); 
    }); 
}else{ 
    $('#loaddiv').show(); 
} 
}); 
+0

检查控制台在firebug也为任何JS错误 – 2012-08-12 08:39:18

+0

[这个答案](http://stackoverflow.com/a/4583146/447356)我的也可能与你的情况有关。 – 2012-08-12 08:42:29

回答

1

你不能可靠地使用JavaScript来onload事件处理函数附加到在页面的HTML的图像。这是因为图像可能已经加载之前,您的JavaScript甚至有机会运行的页面DOM(和它引用的图像)开始加载之前JavaScript有机会运行并找到这些非常DOM元素。一旦图像在浏览器缓存中,IE中的问题就会变得更糟,因为IE在这种情况下几乎立即加载图像。

有两个可能的变通:

  1. 指定与onload属性的实际HTML onload处理。
  2. 请勿将图像放入页面的HTML中。使用javascript动态创建它们,并在图像对象上设置.src属性之前分配onload处理程序,以确保不会错过onload事件。
  3. 当您的JavaScript运行并且在您安装负载处理程序之前,请检查图像是否已经加载并相应地执行。
+0

好吧,有道理!可以提出其他的选择吗? – Nick 2012-08-12 08:39:33

+0

我在答案中提供了两种选择。 – jfriend00 2012-08-12 08:40:14

+0

谢谢,这应该是工作。让我试试看 – Nick 2012-08-12 08:45:34