2012-07-23 43 views
0

我想顯示兩張圖片,我不知道它們何時會生成。所以我想使用jQuery的錯誤函數來檢查圖像是否存在,並顯示每個。以下代碼適用於除IE以外的所有瀏覽器。爲什麼它不適用於IE瀏覽器,真的很感謝你的幫助。jQuery錯誤()函數在IE中不工作

<style type="text/css"> 
DIV#loader { 
    width: 500px; 
    height: 500px; 
    overflow: hidden; 
} 

DIV#loader.loading { 
    background: url(spinner.gif) no-repeat center center; 
} 
</style> 


<script type="text/javascript"> 
$(document).ready(function() { 
    var image_names = new Array(2); 
    image_names[0] = 'a.jpg'; 
    image_names[1] = 'b.jpg'; 
    var divs = document.getElementsByTagName("div"); 
    for (var i = 0; i < divs.length; i++) { 
     showImage(image_names[i], divs[i]); 
    } 
}); 

function showImage(src, div) { 
    var img = new Image(); 
    $(img).load(function() { 
     $(this).hide(); 
     $(div).removeClass('loading').append(this); 
     $(this).fadeIn(); 
    }).error(function() { 
     setTimeout(function() { 
      $(img).attr('src', src); 
     }, 2000); 
    }).attr('src', src); 
} 
</script> 

這是HTML身體

<body> 
<h1>Image Loading</h1> 
<div id="loader" class="loading"></div> 
<div id="loader" class="loading"></div> 
</body> 

好像IE不知道生成圖像,如果不存在,當第一次加載頁面

+1

當您在IE中使用腳本調試器時,哪行代碼顯示錯誤? – 2012-07-23 00:17:46

+1

Id應該是獨一無二的'loader'與多個元素一起使用。 – 2012-07-23 00:22:47

+0

只需檢查,嘗試調用'$(img).attr('src',src);'沒有setTimeout。 – 2012-07-23 00:30:08

回答

0

緩存導致了這個問題。更改src爲:

$(img).attr('src', src + "?" + (new Date().getTime())); 
0

這是$(document).ready({})部分;拋出一個錯誤,即對我來說。至少在IE中,將其更改爲$(function(){});似乎適用於我。

+0

您使用的是哪個版本的IE?我第一次使用'$(function(){});',它不適用於我..我正在使用IE 9 – user1544640 2012-07-23 00:40:12

+0

我在ie9中做過 – jeschafe 2012-07-23 00:40:57

+0

您是否刷新頁面? – user1544640 2012-07-23 00:42:19