4

它适用于 IE6 和 FireFox;但由于某种原因不在 IE7 中。

在 Page_Init 上使用 ASP.NET,我填充了一个章节列表,这些章节是指向书中图像的链接,以及一个保存 pageID 的 Javascript 数组。

前任。

第 1 章 --> href="javascript:seePage(4);"

这是我正在使用的实际代码:


var availablePages = ['1002_001','1002_002','1002_003','1002_004','1002_005'];

function seePage(index) {
    $get('imgSingle').src = 'graphics/loading.gif';
    var img = new Image();
    img.src = 'get.jpg.aspx?size=single&id=' + availablePages[index];
    img.onload = function() {
         var single = $get('imgSingle');
         single.src = img.src;
    }
}

当我单击第 1 章时,图像加载良好(IE6、7、FF),单击第二章链接也可以;但是,在(并且仅在)IE7 中,两次单击同一章节(chap1,chap2,然后再次是 chap1)图像是否会卡在“加载”图像上...

4

2 回答 2

10

这是因为 IE 会缓存图像,并且加载后永远不会触发 onload 事件。

您需要将 onload 事件放在 src 之前。

var availablePages = ['1002_001','1002_002','1002_003','1002_004','1002_005'];

function seePage(index) {
    $get('imgSingle').src = 'graphics/loading.gif';
    var img = new Image();
    img.onload = function() {
         var single = $get('imgSingle');
         single.src = img.src;
    }
    img.src = 'get.jpg.aspx?size=single&id=' + availablePages[index];
}
于 2009-06-24T13:35:31.420 回答
2

另一种方法是检查图像是否已经加载了image.complete. 例如:

var img = new Image();
img.src = 'foo.jpg';
if(img.complete){
    img.onload = function(){ /* ... */ };
} else {
    /* execute something else, or the same. */
}

我在 IE6 和 7 中经历过这种行为。

于 2010-01-08T16:51:02.957 回答