Javascript image.onload在IE7中未触发两次

Javascript image.onload在IE7中未触发两次,javascript,javascript-events,internet-explorer-7,Javascript,Javascript Events,Internet Explorer 7,它适用于IE6和FireFox;但由于某些原因,IE7中没有 在页面_Init I上使用ASP.NET填充一个章节列表,这些章节是指向书中图像的链接,以及一个包含pageID的javascript数组 前 第1章-->href=“javascript:渗流(4);” 以下是我正在使用的实际代码: var availablePages = ['1002_001','1002_002','1002_003','1002_004','1002_005']; function seePage(ind

它适用于IE6和FireFox;但由于某些原因,IE7中没有

在页面_Init I上使用ASP.NET填充一个章节列表,这些章节是指向书中图像的链接,以及一个包含pageID的javascript数组

第1章-->href=“javascript:渗流(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中(并且只有在IE7中),点击同一章节两次(第1章、第2章,然后再点击第1章),图像是否会被卡在“加载”图像上。。。伙计们,我在这里拔头发…

这是因为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];
}

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

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

我在IE6和IE7中体验过这种行为。

我喜欢swap image的jquery插件,愿上帝保佑你,先生。