Hallo,
Ein Link verlinkt eine Ressource, nichts sonst. Er wird *nicht* eingesetzt als Platzhalter-Element für JavaScript-Funktionalität; er wird *nicht* eingesetzt um einen anderen Mauszeiger zu bekommen; er wird *nicht* eingesetzt um bei Mouseover eine Unterstreichung oder einen anderen Effekt zu erhalten. Das alles sind keine Aufgaben eines Link-Elements.
Achja. Cheatahs apodiktische Art, als würde er geoffenbarte Wahrheiten aussprechen. Er spricht bloß moralische Dogmata aus (»Pfui, das macht man nicht!«), stichhaltige Argumente nennt er nicht.
Naja, sein einziges ist vielleicht: »das Element ist nicht dafür gedacht«. Korrekt, aber das Argument zählt nicht, weil es in HTML ohnehin kein besseres Element gibt, das für diese Aufgaben besser geeignet wäre.
Wir leben nicht mehr im Zeitalter von HTML 2, sondern im Jahr 2008, wo wir es mit abermillionen JavaScript-gestützten Webanwendungen zu tun haben. HTML ist nicht XUL oder sonst irgendeine Interface-Sprache. Niemand hat damals wirklich an Scripting gedacht, Einsprengsel wie <button type=button> sind marginale Ausnahmen. Es gibt kein wirklich »semantisch korrektes« Element für reine JavaScript-Schaltflächen. (button kommt aus dem Kontext der Formularfelder - als gäbe es eine Analogie.) Es gibt nur Argumente für und gegen bestimmte Elemente, weil diese bereits ein bestimmtes Verhalten haben. Und a hat da viele Vorteile - gerade weil es nicht bloß als »Ressourcen-Verweis«, sondern auch als dokumentinterne Schaltfläche bekannt und verbreitet ist.
Im Übrigen verzerrt Cheatahs Darstellung, warum man a einsetzt: Andere Elemente kann man mit CSS umformatieren, aber das Verhalten von a-Elementen lässt sich nicht auf diese Weise abbilden. Ein a-Element verhält sich browserübergreifend und unabhängig vom Autoren-Stylesheet in allen JavaScript-fähigen Browsern als eine fokussierbare und anspringbare Schaltfläche. Ob da nun eine HTTP-URI verlinkt ist oder nur JavaScript getriggert wird, ist praktisch irrelevant, sondern nur eine obskure und esoterische Frage der »Semantik«. button taucht bspw. nicht in generierten Linklisten auf, es ist nicht oder anders anspringbar und so weiter.
http://forum.de.selfhtml.org/archiv/2008/3/t168236/#m1097856
http://forum.de.selfhtml.org/archiv/2008/4/t169545/#m1107626
Aber ein Link ist das Dingenskirchen, das per Javascript einen Wert woanders reinschreibt und das aktuelle Fenster schließt, nicht, war es nie und wird es nie sein.
Ja! Weil HTML Hypertext Markup Language ist und nicht XUL, XAML, Qt- oder GTK-XML. Aber mit HTML schreiben wir immer noch Webseiten. Webseiten, die clientseitig dynamisch sind. Webseiten, die JavaScript-Schaltflächen beinhalten. Webseiten, die bestimmte vorgegebene und verbreitete Interface-Pattern nutzen müssen, um bedienbar zu sein. Also mach mal eine klare und brauchbare Ansage, wie du dir vorstellst, wie das »richtig« zusammengehen soll. Ich sehe nicht, dass das so einfach ist, wie ihr suggeriert.
Also ist und bleibt <a> falsch.
Sorry, aber weltfremder und praxisferner gehts gar nicht.
Nennt doch mal Argumente, anstelle bloß moralisch daherzusülzen. Echt, das kotzt mich an, welche Nicht-Bereitschaft es hier gibt, sich mit Problemstellungen und Lösungen vernünftig und argumentativ auseinanderzusetzen. Wenn ich Bock auf Litanei habe und meine Überzeugungen nicht hinterfragen will, trete ich einer Kirche bei, aber bewege mich nicht im SELFHTML-Forum und belästige Fragesteller mit meinen Glaubenssätzen (»Das darfst du nicht, das ist falsch!«).
Lasst die Leute doch machen - machen sie sowieso, schließlich gibt es Millionen Webanwendungen, die es »falsch« machen. Oh, und niemandem tats weh! Im Gegenteil: Die Welt dreht sich immer noch. Und das Web ist benutzbarer geworden. Aber das SELFHTML-Forum bleibt ein gallisches Dorf.
Mathias