2009-06-24 10 views
4

IE6とFireFoxで動作します。しかし何らかの理由でIE7にはありません。IE7でimage.onloadが2回発射しない

Page_InitでASP.NETを使用すると、本の画像へのリンクである章のリストと、ページIDを保持するjavascript配列が作成されます。

ex。

第1章 - > href = "javascript:seePage(4);"私はボード(IE6,7、FF)間の画像負荷が罰金、第1章をクリックすると


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; 
    } 
} 

を第二章のリンクをクリックしても動作します:ここに

は、私が使用しています実際のコードがあります;しかし、IE7は同じ章を2回クリックする(chap1、chap2、chap1をもう一度)と、画像が「読み込み中」の画像にこだわられます...私はここで私の髪を引っ張っています..

+0

を経験した http://code.google.com/p/jquery-swapimage/ –

答えて

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]; 
} 
+2

神が無限のビールの恵みであなたを祝福して欲しいです。 –

+0

私は2番目のJohn Westのコメントにします。 – Rajat

+0

エヴァン・エリオットのビールをもっと! – donut

2

画像がすでにimage.completeで読み込まれているかどうかを確認する別の方法です。例えば:

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

を私はスワップイメージのjqueryのプラグインを愛するこのIE6で動作し、7

+1

いい男。私の命を救いました –

関連する問題