Tanja: HTML/JS: img.onerror

Guten Abend,

welche Möglichkeit habe ich, bei img.onerror die Fehler nach Art oder Problem zu unterscheiden?
Derzeit störe ich mich daran, dass onerror auch bei Warnungen aufgerufen wird und somit onerror angestoßen wird, wenn das Bild bspw. einen falschen Content-Type (ohne "image/" im content type) hat. Es handelt sich um eine Warnung.
Ich würde die Fehlerbehandlung lieber nur aufrufen, wenn timeout oder URL nicht erreichbar, Fehler 404, ... - jedoch nicht wegen ungeeignetem Content-Type.

Wisst ihr, wie ich diese herausfiltern kann?

Danke

  1. Hallo!

    welche Möglichkeit habe ich, bei img.onerror die Fehler nach Art oder Problem zu unterscheiden?

    Direkt wüsste ich keine.

    Derzeit störe ich mich daran, dass onerror auch bei Warnungen aufgerufen wird und somit onerror angestoßen wird, wenn das Bild bspw. einen falschen Content-Type (ohne "image/" im content type) hat.

    Interessant. Welcher Browser macht das?

    Ich würde die Fehlerbehandlung lieber nur aufrufen, wenn timeout oder URL nicht erreichbar, Fehler 404, ... - jedoch nicht wegen ungeeignetem Content-Type.

    Wisst ihr, wie ich diese herausfiltern kann?

    Die Eigenschaften width und height sind größer als 0, wenn das Bild geladen werden konnte. Du könntest beim onerror z.B. diese abfragen.

    Mathias

    1. Interessant. Welcher Browser macht das?

      Firefox, Chrome, diverse Webkit-Browser...

      Die Eigenschaften width und height sind größer als 0, wenn das Bild geladen werden konnte. Du könntest beim onerror z.B. diese abfragen.

      Leider nein, es handelt sich um ein Tracking-Pixel bzw. eine leere Datei, die weder Höhe noch Breite hat.
      Mit korrektem Content-Type ist alles fein; ohne Content-Type beginnend "image/" schlägt auch diese Überprüfung fehl.

      Noch eine Idee?

      1. Die Eigenschaften width und height sind größer als 0, wenn das Bild geladen werden konnte. Du könntest beim onerror z.B. diese abfragen.
        Leider nein, es handelt sich um ein Tracking-Pixel bzw. eine leere Datei, die weder Höhe noch Breite hat.

        Dann sende doch einfach ein korrektes PNG mit einer Größe von 1x1 Pixel, wie es die meisten Tracking-Dienste tun, die diese Technik verwenden.

        Die Dateigröße eines solches Bildes dürfte unter 50 Byte bleiben (erzeugen mit GIMP, weiter komprimieren mit PNGCrush, OptiPNG usw.).

        Mathias