2012-02-20 58 views
3

我一直在嘗試使用腳本,它在Chrome和Firefox中可以正常工作,但在IE中會出現卡紙。IE中的jquery圖像加載

看到這裏 http://www.micahcarrick.com/code/jquery-image-swap/index.html

爲什麼它不能在IE中任何想法的人工作?

+0

它只是打破了圖像從加載之後緩存,對嗎? – Francisc 2012-02-20 00:46:19

+0

哪個IE版本?我在IE9看它,它看起來像在工作。 – 2012-02-20 00:49:20

+0

已將其設置在JSFiddle上http://jsfiddle.net/yPme4/ – Dampsquid 2012-02-20 01:00:19

回答

6

至少在某些版本的IE中,您必須在設置.src屬性之前註冊加載事件,因爲如果圖像位於緩存中,則當您設置.src時,加載事件將立即觸發,因此您將錯過它如果你還沒有設置.load事件處理程序。

在的jsfiddle代碼,這將需要這個(也簡化了一點):

var url = this.href; 
$('<img />').load(function() { 
    $('#imageWrap').css('background-image', 'none'); 
    $('#mainImage').attr('src', url).fadeIn(); 
}).attr('src', url); 

你可以看到它在這裏工作:http://jsfiddle.net/jfriend00/vEVVG/

+0

剛剛將它粘貼到JSFiddle中,並沒有什麼區別 – Dampsquid 2012-02-20 01:17:04

+0

您需要將i.attr('src')更改爲this.href以將其更改爲工作,不能編輯答案,所以它在這個評論。 http://jsfiddle.net/yPme4/2/ – Dampsquid 2012-02-20 01:25:59

+0

@Dampsquid - 好的,所做的更改,使其在jsFiddle中工作。我只是試圖說明他們必須放置'.src'的設置。這是這裏的主要觀點,但現在它已被簡化,並在我的jsFiddle中也可用:http://jsfiddle.net/jfriend00/vEVVG/。 – jfriend00 2012-02-20 01:42:02