确定IE中onload和onerror事件处理程序中的图像src

时间:2010-05-08 04:23:33

标签: javascript jquery

如何在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')部分打印出undefined。我认为jQuery应该规范IE的事件对象,以便它像其他浏览器一样?我已尝试过多种排列,但无法在IE8中使用任何东西。

无论如何,如果有人建议如何在IE中工作的onload和onerror事件处理程序中找出图像src,我会非常感激。甚至如何在图像加载后已经加载并且没有(但不是图形 - 我需要生成包含未加载的图像的文件名的数组)。谢谢!

2 个答案:

答案 0 :(得分:3)

在Firefox和所有优秀的浏览器中,它是.target;在IE浏览器中.srcElement。只需在每次追加之前插入此行:

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

然后将event.target更改为:

targetEl

答案 1 :(得分:1)

好的,我明白了。

您必须使用事件对象的currentTarget属性而不是目标属性 - 即。,

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

适用于FF和IE8。