Horst: Validator und Attribute

Hallo,

der Validator von w3.org meckert bekanntlich, wenn bei einem img-tag das alt-Attribut fehlt.

Erstaunlicherweise meckert er nicht, wenn bei einem a-tag das href-Attribut fehlt. Was mich so ein bischen stutzig macht, weil ein a-tag ohne href so ziemlich Käse ist, ein img jedoch auch ohne alt funktioniert.

Bitte klärt mich mal auf.

Wie ich darauf komme? Nun, ich habe tatsächlich einen a-tag ohne href, dieses Attribut wird erst nach einem AJAX-Request gesetzt. Wenn ich es vorbelege, wie sich das normalerweise gehört, erscheint für eine kurze Zeit ein unterstrichenes Leerzeichen was nicht so schön ist.

<p><a id='bookmark' title='Diese Datei auf die Bookmarkseite'>&nbsp;</a>&nbsp;</p>

(Beide &nbsp; werden mit AJAX verändert)

Viele Grüße,
Hotte

  1. Hallo,

    Guten Tag

    Erstaunlicherweise meckert er nicht, wenn bei einem a-tag das href-Attribut fehlt. Was mich so ein bischen stutzig macht, weil ein a-tag ohne href so ziemlich Käse ist, ein img jedoch auch ohne alt funktioniert.

    Das liegt daran, dass das a-Tag nicht ausschließlich für Links verwendet wird, sondern auch als Anker für Seitensprünge verwendet werden kann:

    <a name = "oben"></a>

    [HTML Code]

    <a href = "#oben">Nach oben</a>

    MfG,

    McKentire

  2. Hi Horst,

    Mit einem A-Element kann man z.B. Anker erstellen:
    <a name="xyz">Text</xyz>

    Mfg Lukas

  3. Hallo Horst,

    der Validator hält sich streng an die Norm, und diese schreibt für Bilder ein "alt" vor, für "Links" aber kein "href".
    Ich glaube, das erste stammt aus der Zeit als viele Surfer die Bilderansicht defaultmäßig abgeschaltet hatten und anhand des alt-Textes entschieden haben, das Bild nachzuladen.
    Das fehlende "href" im "a" macht schon Sinn, da früher das "<a name=" als Anker benutzt wurde.

    Gruß, Jürgen

  4. Hello out there!

    der Validator von w3.org meckert bekanntlich, wenn bei einem img-tag das alt-Attribut fehlt.

    Weil's Pflicht ist (REQUIRED):

    <!ATTLIST IMG
    [snip]
      alt         %Text;         #REQUIRED -- short description --

    [HTML401 DTD, HTML401 §13.2]

    Erstaunlicherweise meckert er nicht, wenn bei einem a-tag das href-Attribut fehlt.

    <!ATTLIST A
    [snip]
      href        %URI;          #IMPLIED  -- URI for linked resource --

    [HTML401 DTD, HTML401 §12.2]

    Was mich so ein bischen stutzig macht, weil ein a-tag ohne href so ziemlich Käse ist

    Nein, "Anker" heißt nicht (notwendigerweise) "Link". Siehe [SELFHTML]

    ein img jedoch auch ohne alt funktioniert.

    Sag das mal einem Blinden! Oder einem Agenten, der gar keine Augen hat! [DIALOG-ROBOT]

    Ein Bild ohne Alternativtext ist "ziemlich Käse".

    Wenn ich es vorbelege, wie sich das normalerweise gehört

    Gehört sich also nicht. Also weg mit dem 'href'-Attribut ...

    erscheint für eine kurze Zeit ein unterstrichenes Leerzeichen was nicht so schön ist.

    ... und weg ist dein Problem.

    See ya up the road,
    Gunnar

    --
    „Und [dieses Forum] soll […] auch ein Fachforum bleiben und kein Psychologieforum werden.“ (Kirsten Evers)
    1. Hallo,

      Wenn ich es vorbelege, wie sich das normalerweise gehört

      Gehört sich also nicht. Also weg mit dem 'href'-Attribut ...

      Ok, ich bin artig ;-)

      erscheint für eine kurze Zeit ein unterstrichenes Leerzeichen was nicht so schön ist.

      ... und weg ist dein Problem.

      Es ist schon weg ;-)

      Viele Grüße,
      Hotte

  5. Hi Horst!

    Wie ich darauf komme? Nun, ich habe tatsächlich einen a-tag ohne href, dieses Attribut wird erst nach einem AJAX-Request gesetzt. Wenn ich es vorbelege, wie sich das normalerweise gehört, erscheint für eine kurze Zeit ein unterstrichenes Leerzeichen was nicht so schön ist.
    <p><a id='bookmark' title='Diese Datei auf die Bookmarkseite'>&nbsp;</a>&nbsp;</p>

    Ich habe noch ein paar Tipps für dich. Natürlich steht es dir frei, sie zu berücksichtigen oder es sein zu lassen.

    1. Du baust eine Funktion nach, die sowieso standardmäßig im Browser integriert ist.
    2. Du kannst Links auch mit CSS so formatieren, dass sie nicht unterstrichen werden.
    3. Wozu brauchst du überhaupt ein geschütztes Leerzeichen in dem Link, wenn du den Text sowieso neu setzt? Oder anders gefragt: Wieso erzeugst du nicht alles, was ohne JavaScript eh nicht funktioniert, ganz mit JavaScript?

    MfG H☼psel

    --
    "It's amazing I won. I was running against peace, prosperity, and incumbency."
    George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
    Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
    1. Hallo,

      1. Wozu brauchst du überhaupt ein geschütztes Leerzeichen in dem Link, wenn du den Text sowieso neu setzt?

      IE meckert, wenn das nicht da ist. Für ein

      document.getElementById('bookmark').firstChild.nodeValue = 'AJAX';

      muss vorher ein Leerzeichen da sein (steht auch in SELFHTML irgendwo, dass es ohne nicht geht).

      Oder anders gefragt: Wieso erzeugst du nicht alles, was ohne JavaScript eh nicht funktioniert, ganz mit JavaScript?

      Das Ganze ist ein neues Feature auf meiner WebSite, die sehr umfangreich ist und auch heterogen ;-)

      Kochrezepte finden sich da genauso wie Webanwendungen zu Datumsberechnungen oder zu Kalkulationen von Subnetzen.

      Mit meinem seit heute morgen eingebautem Feature kann der Besucher eine von mir bereitgestellte Seite mit Bookmarks füllen, sozusagen ein eigenes Menu zusammenstellen.

      Die Choice ist in einem Cookie abgelegt. Zum Einbau eines Links like "Diese Datei in das eigene Menu" verwende ich AJAX. Dahinter liegt ein serverseitiges Script, was den Cookie ausliest, ist die Datei schon im Bookmark, wird der Link nicht mehr gezeigt. Dieser Link (sichtbar oder nicht) ist also auf allen WebDokumenten eingebaut, die für ein benutzerbasiertes Menu zur Verfügung stehen.

      Der Parameter "Bookmark setzen" zeigt ebenfalls auf das serverseitige Script, was einmal den Cookie aktualisiert und dann wieder auf den Referer umleitet.

      Die Darstellung der Bookmarkseite übernimmt ein reines CGI-Script, das liest den Cookie aus und listet die Links jeweils mit den Optionen [anzeigen] [löschen].

      Hilfreich zur Darstellung der Bookmarkseite ist die Tabelle mit der Seitenaufrufstatistik, darin steht neben der URL auch der etwas aussagekräftigere Titel.

      Alles zusammen ist also ein Mix von JavaScript, Ajax und CGI in PERL, wobei die Darstellung der Bookmarkseite mit MySQL-Anbindung ohnehin nicht mit JavaScript alleine gemacht werden kann.

      Heute morgen war ich schonmal nahe dran, alles wieder in die Tonne zu treten, aber wenn ichs mir so anschaue, isses doch ganz gut geworden und meine Frau findets auch cool.

      Viele Grüße,
      Hotte

      1. Hallo Horst,

        IE meckert, wenn das nicht da ist. Für ein

        document.getElementById('bookmark').firstChild.nodeValue = 'AJAX';

        muss vorher ein Leerzeichen da sein (steht auch in SELFHTML irgendwo, dass es ohne nicht geht).

        du kannst den Link auch mit createElement erstellen, dann sofort mit dem richtigen Linktext.

        Gruß, Jürgen

        1. Hallo,

          muss vorher ein Leerzeichen da sein (steht auch in SELFHTML irgendwo, dass es ohne nicht geht).

          du kannst den Link auch mit createElement erstellen, dann sofort mit dem richtigen Linktext.

          Danke, mal sehen, wenn die Abende wieder länger werden...

          Viele Grüße auch an Gunnar und die Anderen, wo hier im Thread mitgeholfen haben!!!

          Horst Haselhuhn

      2. Hello out there!

        IE meckert, wenn das nicht da ist. Für ein
        document.getElementById('bookmark').firstChild.nodeValue = 'AJAX';
        muss vorher ein Leerzeichen da sein

        Ja sicher, sonst gibt es keinen Textknoten, also kein 'firstChild'. Und darüber dürfte nicht nur der IE meckern.

        (steht auch in SELFHTML irgendwo, dass es ohne nicht geht).

        Sicher geht es ohne, indem du dir den Textknoten erzeugst (steht auch in SELFHTML irgendwo ;-)).

        See ya up the road,
        Gunnar

        --
        „Und [dieses Forum] soll […] auch ein Fachforum bleiben und kein Psychologieforum werden.“ (Kirsten Evers)