Code-Beispiel: Bunte Links

Der JavaScript-Kram hier ist hoffnungslos veraltet. Keine Ahnung, ob ich das irgendwann einmal anpasse. Die Funktionalität scheint den Aufwand erstmal nicht zu rechtfertigen.

Aufgrund einer Forenanfrage bei Spotlight habe ich mal versucht, auf möglichst effiziente Weise bunte Links zu erstellen, ohne dabei den Quellcode für Suchmaschinen und andere Bots total zu zerschroten. Daher habe ich mir eine JavaScript-Lösung erdacht. Derart können nämlich die Suchmaschinen ausgeschlossen werden, die so nur den eigentlichen und daher einigermaßen sauberen Quelltext zu sehen bekommen. Nachfolgend eine kurze Erläuterung.

Benötigt wird zuerst natürlich mal ein entsprechender Verweis. Dieser ist durch zum Beispiel <a class="keyword" href="/bunte-links">bunte Links</a> schnell erstellt. Dann fehlt noch die entsprechende JavaScript-Funktion (nennen wir Sie mal coloredLinkLetters()), die beim Laden der Seite durch <body onload="coloredLinkLetters()"> aufgerufen wird. Diese sieht wie folgt aus:

function coloredLinkLetters(){ var elem = document.getElementsByTagName('a'); var expression = /^[a-zA-Z]$/; for (var i = 0; i < elem.length; i++){ if (elem[i].hasAttribute('class')){ if (elem[i].getAttribute('class') == "keyword"){ var res = ""; for (var j = 0; j < elem[i].innerHTML.length; j++){ var c = elem[i].innerHTML.charAt(j); if (c.match(expression)){ res += "<span class=\"" + c.toLowerCase() + "\">" + c + "<\/span>"; } else { res += c; } } elem[i].innerHTML = res; } } } }

An diesem Punkt haben wir bereits dafür gesorgt, dass jeder einzelne Buchstabe des Verweises von klassifizierten <span>-Tags umgeben ist. Durch die Verwendung eines regulären Ausdruckes werden hier ausschließlich Groß- und Kleinbuchstaben entsprechend umgesetzt.

Damit die Buchstaben nun aber schön bunt erscheinen, werden entsprechende CSS-Angaben benötigt:

a.keyword { background-color: yellow; border: 1px solid red; padding: 1px; } a.keyword span.a {color: red;} a.keyword span.b {color: green;} a.keyword span.c {color: aqua;} a.keyword span.d {color: orange;} a.keyword span.e {color: purple;} a.keyword span.f {color: navy;} usw. Und - Trommelwirbel - es funktioniert: bunte Links! Meine hier eingesetzte eigene Version habe ich noch etwas erweitert; die Funktion erwartet jetzt noch zwei Parameter. Der erste gibt den Elementnamen, der zweite den Klassennamen an. So könnte man alle möglichen klassifizierten Elemente bunt darstellen. Ob man das hingegen will, bleibt dahingestellt; selbst die bunten Links werde ich wohl eher selten (im Sinne von gar nicht) einsetzen. Letzte Änderung: 23. März 2007