2010-05-08 54 views
1

如何確定在IE中的onload和onerror事件處理程序中觸發事件的圖像的圖像src?這個例子的代碼,我扔在一起:在IE中的onload和onerror事件處理程序中確定圖像src

<script language="javascript" type="text/javascript" src="jquery.js"></script> 
<script language="javascript" type="text/javascript"> 
function loadImages() { 
    var goodImage = new Image(); 
    var missingImage = new Image(); 

    $(goodImage).bind('load', function(event){ 
     $("#log").append($(event.target).attr('src') + ' WAS FOUND <br>'); 
    }); 

    $(missingImage).bind('load', function(event){ 
     $("#log").append($(event.target).attr('src') + ' WAS FOUND <br>'); 
    }); 

    $(goodImage).bind('error', function(event){ 
     $("#log").append($(event.target).attr('src') + ' IS MISSING <br>'); 
    }); 

    $(missingImage).bind('error', function(event){ 
     $("#log").append($(event.target).attr('src') + ' IS MISSING <br>'); 
    }); 

    goodImage.src = 'GOOD-IMAGE.GIF'; // this image exists 
    missingImage.src = 'MISSING-IMAGE.GIF'; // this image doesn't exist 
} 

</script> 
</head> 
<body onload="loadImages();"> 
<div id="log"></div> 

作品在FF,但在IE8它打印出不確定的$(event.target).attr( 'SRC')的一部分。我認爲jQuery應該規範IE的事件對象,以便它像其他瀏覽器一樣行事?我已經嘗試了一些排列組合,但一直未能在IE8中獲得任何東西。

無論如何,如果任何人有一個關於如何找出在IE中的onload和onerror事件處理程序中的圖像src的建議,我真的很感激。或者甚至在圖像加載後已經加載並且沒有(但不是圖形 - 我需要生成包含未加載的圖像的文件名的數組)的圖像後如何解決。謝謝!

回答

3

在Firefox和所有優秀的瀏覽器中它是.target;在IE中它是.srcElement。只是每次追加之前插入此行:

var targetEl = event.target || event.srcElement; 

然後換event.target到:

targetEl 
+0

德蘭 - 很好的嘗試,並感謝您的信息。我嘗試過,但IE8在這種情況下使用event.target(我相信,因爲jQuery重置事件對象的IE瀏覽器儘可能多的行爲,如符合W3C標準的瀏覽器),所以這並沒有解決我的問題。 – Bill 2010-05-08 14:16:47

1

OK,我想它了。

你必須使用事件對象不是目標屬性currentTarget屬性 - 無論是在FF和IE8即

$("#log").append($(event.currentTarget).attr('src') + ' WAS FOUND <br>'); 

作品。