2012-02-20 28 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