2013-04-09 10 views
5

Ich habe Code so etwas wie diesesonerror <img> Tag-Attribut wird immer in IE ausgelöst, warum?

<a class="img" href="LINK"> 
    <img src="GOOD_IMG" title="title" onerror="src='ERROR_IMG'"> 
</a> 

in FireFox und Chrom verhält es sich, wie man erwarten würde (zeigt GOOD_IMG wenn es vorhanden ist und zeigt ERROR_IMG wenn nicht), aber in IE (9) es zeigt immer den ERROR_IMG.

Wenn ich im IE debuggen und im laufenden Betrieb die onerror so etwas anderes z.

onerror="alert('error')" 

dann erscheint die Warnmeldung und das richtige Bild wird angezeigt.

Was könnte dazu führen, dass IE onerror aktiviert, wo die anderen Browser kein Problem haben?

Gibt es einen Weg, ich kann herausfinden, was die onerror verursacht?

Dank

+0

Versuchen Sie 'onerror' auf etwas wie' myFunc (e) 'und log' e' in der Konsole zu setzen. – MMM

+0

Funktioniert für mich in IE8 und IE9: http://jsfiddle.net/LyZmq/ Könnte es sein, dass IE nicht funktioniert dieses spezifische Bild erkennen? –

+0

Ich habe festgestellt, dass, wenn es nicht sofort das Bild erhält, es den 'onerror' auslösen wird. Wir nutzen dies zu unserem Vorteil in unserer Anwendung, die dynamisch die Quelle von Profilbildern aus einer Datenbank einstellt, so dass 'onerror' ausgelöst wird und wir setzen es auf das Standardkontaktbild, bis das aktuelle Bild geladen wird. –

Antwort

0

Wechseln zu:

onerror = function() { 
    alert('error'); 
}; 
1

Sie mögen dies versuchen. Zuerst müssen Sie eine JS-Funktion schreiben, um zu prüfen, ob das Bild existiert oder nicht (AJAX Call Return existiert oder nicht) und das Bild entsprechend zu ändern.

Zweitens rufen Sie die Funktion auf onerror Ereignis

function imgError(imageControl, path) {   
      $.ajax({ 
       type: "POST", 
       async: true, 
       url: "test.aspx/CheckImageExists", 
       data: "{'imagePath':" + JSON.stringify(path) + "}", 
       contentType: "application/json; charset=utf-8", 
       success: function (response) { 
        if (response.d == "exists") { 
         imageControl.src = path; 
        } 
        else { 
         imageControl.src = 'img/errorimg.jpg'; 
        } 
       } 
      }); 
      return true; 
     } 

<img src="<%# "admin/"+ Eval("imagath") %>" onerror="imgError(this,'<%# "admin/"+ Eval("imagath") %>')"> 

C# 
[WebMethod]  
     public static string CheckImageExists(string imagePath) 
     { 
      string fullPath = HttpRuntime.AppDomainAppPath.ToString() + imagePath; 
      fullPath=fullPath.Replace('/','\\'); 
      return File.Exists(fullPath) ? "exists" : "notexists";   
     } 
1

ich auch ähnliche Symptome erlebt. In meinem Fall trat 'onerror' auf, indem 'leer' in src bei <img> gesetzt wurde.

Problem:

html

<img src="" onerror="this.src='ERROR_IMG'"> 

js

$('._profile_image:first').attr('src', IMAGE_URL); 

Lösung:

<img onerror="this.src='ERROR_IMG'">