Jens: XHTML und onerror

Moin Moin,

ichhabe ein kleines Problem mit XHTML und onerror

momentan verwende ich den Code:

<img src="$cambild" border="0" width="160" height="120" alt="" onerror="this.src='error.jpg'" />

das funktioniert soweit auch prima nur dem XHTML-Validator passt das nicht:

there is no attribute "onerror" (explain...).

ich denke mal ich habe da nur einen Denkfehler, weiß jemand die Lösung für mein Problem ?

Bye
Jens

  1. Hallo,

    versuch doch mal, die Angaben border, height und width per CSS zu machen.

    Gruß
    Alexander

    1. versuch doch mal, die Angaben border, height und width per CSS zu machen.

      hat leider nichts gebracht, selber fehler

      <img src="$cambild" style="width:160px; height:120px; border:0" alt="" onerror="this.src='error.jpg'" />

  2. Tach,

    there is no attribute "onerror" (explain...).

    das Attribut heißt onError.

    mfg
    Woodfighter

    1. Tach,

      there is no attribute "onerror" (explain...).

      das Attribut heißt onError.

      mfg
      Woodfighter

      und ich dachte immer in XHTML schreibt man das klein ;)
      aber trotzdem mal versucht und selben Fehler bekommen

      there is no attribute "onError" (explain...).

      ...th="160" height="120" alt="" onError="this.src='

      1. hi,

        und ich dachte immer in XHTML schreibt man das klein ;)
        aber trotzdem mal versucht und selben Fehler bekommen

        und was schliessen wir daraus?
        onerror scheint es in XHTML nicht als erlaubtes attribut für <img> zu geben.

        gruss,
        wahsaga

  3. Hallo,

    there is no attribute "onerror" (explain...).

    ich denke mal ich habe da nur einen Denkfehler, weiß jemand die Lösung für mein Problem ?

    Der Validator sagt genau was Sache ist: es gibt kein Attribut beim <img>-Element mit dem Namen onerror (oder onError).

    Du muss bei solchen Meldungen nicht von _deinem_ (X)HTML ausgehen, sondern von der Tatsache, dass der Validator _von der DTD aus gesehen_ die Fehler in deinem Code anzeigt.
    Sprich: wenn der Validator sagt. "there is no attribute ...." dann heisst es nicht, dass es in deinem Code kein solches Attribut gibt, sonder, dass es in der DTD kein solches Attribut exisitiert.

    Man validiert ja nicht die DTD gegen seinen eigenen Code, sonder den Code gegen der DTD. ;-)

    Grüße
    Thomas

    1. Man validiert ja nicht die DTD gegen seinen eigenen Code, sonder den Code gegen der DTD. ;-)

      Grüße
      Thomas

      Ja schon klar, allerdings kommt solch eine Meldung ja teilweise auch wenn man was falsch schreibt, glaube bei nowrap war das auch so wenn man es nicht nowrap="nowrap" schreibt.

      Also müßte ich das ganze jetzt wohl irgendwie per javascript lösen, nur damit tue ich mich immer sehr schwer, dann wohl doch lieber per PHP oder hat jemand eine andere Lösung wie man das ganze lösen könnte ?

      Funktionieren tut das ganze ja nur ist es ja nicht mein Bestreben mit einem Fehler im Code zu leben ;)

      1. Hallo,

        Also müßte ich das ganze jetzt wohl irgendwie per javascript lösen, nur damit tue ich mich immer sehr schwer, dann wohl doch lieber per PHP oder hat jemand eine andere Lösung wie man das ganze lösen könnte ?

        Funktionieren tut das ganze ja nur ist es ja nicht mein Bestreben mit einem Fehler im Code zu leben ;)

        Versuche es DOM-konform mit addEventListener() bzw. im IE mit attachEvent():

        ...
        <body>
        <img id="bild" src="bla.jpg" border="0" width="160" height="120" alt="" />
        <script type="text/javascript">
        <![CDATA[

        var obj=document.getElementById("bild");

        if(obj.addEventListener)obj.addEventListener("error",Fehler,false)
          else if(obj.attachEvent)obj.attachEvent("onerror",Fehler);

        function Fehler()
          {
            obj.setAttribute("src","error.jpg");
            // oder obj.src="error.jpg";
          }

        ]]>
        </script>
        </body>
        ...

        Beachte die Schreibweisen error (Event) bzw. onerror (Event-Handler) beim Aufruf der Methoden.

        MfG, Thomas

        --
        SVG - Learning By Coding
        http://svglbc.datenverdrahten.de/
        1. MfG, Thomas

          vielen dank dadurch bin ich auf die lösung mit dem JS gekommen cdata mag der IE leider nicht, nutze es jetzt so:

          <script type="text/javascript">
          <!--
            var obj=document.getElementById("bild");
            if(obj.addEventListener)obj.addEventListener("error",Fehler,false)
            else if(obj.attachEvent)obj.attachEvent("onerror",Fehler);
            function Fehler(){
           obj.src="error.jpg";
            }
          //-->
          </script>

          getestet mit Opera 7.21 und IE6

          jetzt muß ich das nur noch auf mehere bilder umsetzen, aber das sollte ja mit verschiedenen IDs kein problem sein

          einfach immer den code wiederholen mit anderen namen bei ID z.b. bild1 var obj z.b. obj1 und der funktion fehler z.b. Fehler1

          oder habe ich da nen denkfehler und es geht einfacher ?

          auf jeden fall danke für die hilfe