Hallo,
<a href="javascript:lnker('form','set', '2');">Infos</a>
Tidy sagt, das sich in der obigen URI unerlaubte Zeichen enthalten sind. Ich denke mal es handelt sich dabei um die einfachen Anführungsstriche.
»javascript: ...« ist keine gültige URI, deswegen schlägt Tidy Alarm.
In dem Punkt solltest du die Ursache von Tidys Fehlermeldung erkennen und beheben, nicht herumbasteln, um Tidy zufriedenzustellen. href="javascript:..." ist praktisch möglich, entspricht aber keinem Standard. Es hat keine praktischen Nachteile, href="javascript:..." zu benutzen im Vergleich zu href="#" onclick="...".
Sorgen machen solltest du dir aus einem anderen Grund: href="javascript:..." funktioniert natürlich nur, wenn JavaScript unterstützt wird und aktiviert ist. bei <a href="..." onclick="..."> hättest du die Möglichkeit, das href-Attribut sinnvoll zu füllen - href="#" ist im Hinblick auf Zugänglichkeit ohne JavaScript kein Stück sinnvoller als href="javascript:...".
<a href="#" onClick="lnker('form','set', '2');">Infos</a>
Damit hast du praktisch gar nichts gewonnen.
jedoch gibt es jetzt Schwierigkeiten mit der Scriptausführung.
Klar - das Aktivieren des Links löst das click-Ereignis aus. Nachdem der JavaScript-Code abgearbeitet ist, wird die Adresse # annavigiert. Das ist die sogenannte Standardaktion (default action), die einem Klick auf einen Link folgt.
Im Event-Handler kannst du diese Standardaktion unterdrücken, und zwar mit return false: <a href="seite.html" onclick="alert('Das Linkziel wird gleich nicht annavigiert.'); return false">...</a>
- Eine Alternative zu den einfachen Anführungszeichen?
Nein, wozu auch. Du könntest höchstens anders vorgehen:
- Zugänglichkeit ohne JavaScript ermöglichen, daher einfache JavaScript-lose Hyperlinks im HTML-Code unterbringen
- JavaScript-Funktionalität auslagern und Event-Handler automatisch registrieren
- Eine Möglichkeit den Link in der Javascriptfunktion zu unterdrücken?
return false, siehe oben.
Mathias