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)、2 番目のチャプター リンクをクリックしても機能します。ただし、IE7 では (および IE7 でのみ) 同じチャプターを 2 回クリックすると (chap1、chap2、次に chap1 をもう一度)、画像が「読み込み中」の画像で動かなくなります...

4

2 に答える 2

10

これは、IE が画像をキャッシュし、既に読み込まれた後に onload イベントが発生しないために発生します。

src の前に onload イベントを配置する必要があります。

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 に答える