2012-07-05 47 views
2

我在jQuery 1.7.2上有一個小腳本。本質上,它顯示縮略圖,然後用完整圖像替換一次已加載的縮略圖。IE7引發jQuery的'堆棧溢出行:0'錯誤

<img src="http://site.com/thumbnail.jpg" data-original="http://site.com/original.jpg" class="preload"> 

在jQuery的,我只是有:

$('.preload').load(function(){ 

    $(this).attr('src', $(this).attr("data-original")); 

}); 

其中一期工程上的瀏覽器如Firefox,Chrome和IE8甚至罰款。然而,IE7將繼續拋出

Stack overflow at line: 0 

錯誤(乘以具有預加載類元素的個數)。

如果我從圖像中刪除類,錯誤不會顯示。

感謝

回答

2

您對圖像的onload執行事件,然後chanign圖像SRC所以onload事件會再次觸發。它在無限循環,所以你越來越堆棧溢出。

$('.preload').load(function(){ 
    if($(this).attr('src') != $(this).attr("alt")){ 
     $(this).attr('src', $(this).attr("alt")); 
    } 
    }); 
+0

在FF和其他瀏覽器也有同樣的方式,但唯一的事情是他們停止執行後的certin時間。所以如果你在FF中使用firebug或ctrl + shift + j,你將會看到堆棧溢出。 – gaurang171 2012-07-05 17:15:29

+0

感謝您的協助。我認爲這可能是一個無限循環,但無法確定原因。看看過時的瀏覽器仍然可以有一些用途,例如發現錯誤,如。我一定會偷看你提到的FireFox快捷方式。 再次感謝 – 2012-07-05 17:20:51