Läuft man einem Javascript-Link in freier Wildbahn über den Weg, ist die Wahrscheinlichkeit sehr hoch, dass dieser in etwa die Form <a onclick="tolle_funktion()" href="#"> hat. Warum nur!
Es scheint so, als würden Leute dies tun, weil sie nichts besseres haben, das sie den Link referenzieren lassen können. Sie benutzen das Rautezeichen quasi als Ersatz für nichts. Dass das recht wenig Sinn ergibt, versteht sich von selbst. Warum die Raute nehmen, wenn es auch gleich sein lassen könnte? Ich glaube das ist eine dieser seltsamen Traditionen als grauer Frontpage-Zeit, genau wie auch die Verwendung von als normales Leerzeichen.
Statt Rautezeichen oder gar nichts gehört in das href-Attribut eines Links eine schöne URL, mit der man dem User möglichst genau das serviert, was auch die Javascript-Funktion zu bieten hat. Dann kommen nämlich auch jene, die kein Javascript zur Hand haben, in den Genuss der hinter dem Link verborgenen Informationen. Außerdem interpretieren Browser href="#" als Sprunglink zum Seitenanfang. Das will man doch wirklich nur in Ausnahmefällen.
Es gibt also keinen Grund, warum das href-Attribut eines Links jemals # sein sollte. Besser:
<a href="/ersatz-url/index.html" onclick="return tolle_funktion()">
Wenn man auf diesen Link klickt, und tolle_funktion() läuft wie sie soll, gibt sie (ordentliche Programmierung vorausgesetzt) true zurück und der Link ruft die url in href nicht auf. Wenn aber die Funktion auf Probleme stößt, wird nichts bzw. false zurückgegeben und der Benutzer landet bei der Ersatz-URL. Eine Testseite zur Demonstration steht bereit.
Wenn man das alles haben kann, warum noch zur Raute greifen?



metax. ¶
15. Dezember 2007, 09:31 Uhr
Was mir spontan auf der Testseite aufgefallen ist:
Der #-Link wird nach einem Klick als "visited" angezeigt, wogegen der andere Link mit echtem Ziel so lange "unvisited" bleibt, bis man mal ohne Javascriopt draufklickt.
Es gibt übrigens noch eine dritte Möglichkeit:
<a href="javascript:tollefunktion();"></a>Wie schaut es damit aus?
Natürlich fehlt hier die redundante Seite, auf der dem Nicht-Javascript-Benutzer ein Ersatz angezeigt wird.
Aber ist das technisch korrekt, oder auch nur ein Frontpage-Konstrukt?