Ajax-Beispiel: E-Mail-Adressen schützen
XHTML-fähig durch Nutzung des DOMGrundsätzliches zu Ajax finden Sie in der Rubrik "WebWissen" unter Ajax. Weitere Artikel zu Ajax – mitunter auch als einer der Eckpfeiler des "Web 2.0" bezeichnet – finden Sie im Internet wie Sand am Meer, weswegen ich hier nicht weiter darauf eingehen will. Sinn des Gratis-Archivs ist (a) den Kern von Ajax zu demonstrieren ohne Floskel, aber in der Praxis einsetzbar, d.h. die Lösung funktioniert in allen wichtigen modernen Browsern; und (b) die nützliche Anwendung zu verteilen, E-Mail Adressen vor Spambots auf eleganter Weise zu verstecken (English: Email-Cloaking). Die Antwort vom Server wird im XML-Format übertragen - das JSON-Format wäre einfacher für diesen Fall alleine, doch XML lässt sich eleganter mit verschiedenen anderen Daten ausbauen. VerfahrenUrsprunglich enthält die Seite für jede E-Mail-Adresse einen <img>-Tag, der eine Grafik mit der jeweiligen E-Mail-Adresse referenziert. Der <img>-Tag befindet sich innerhalb eines <span>-Tags mit einem id nach dem Schema "email<n>", wobei (auf die jeweilige Webseite bezogen) <n> bei 1 beginnt und lückenlos durchnummeriert werden muss. Der <img>-Tag wiederum erhält als id einen eindeutigen String, der die gewünschte E-Mail-Adresse identifiziert. Ist JavaScript oder Ajax im Browser nicht verfügbar, so bleibt die Grafik stehen – zwar ohne "mailto:" Link, aber immerhin für den Menschen lesbar. Funktioniert Ajax, wird das Dokument beim "onload" Event nach Elementen mit id's nach dem Schema "email<n>" durchsucht, und für jedes gefundene id wird einen Get-Parameter "email<n>=<id>" dem Ajax-Aufruf hinzugefügt. Der so aufgerufene PHP-Script liefert per XML für jede gewünschte E-Mail-Nr. den Link-Text und den Alt-Text an den Browser zurück. Dann geht es im DOM-Modell für jede E-Mail Adresse wie folgt weiter: Es wird ein neues Anchor-Element erzeugt, mit den entsprechenden Daten aus der XML-Liste vom Server. Dann wird das jeweilige <img>-Element aus dem DOM-Baum entfernt und durch das neue Anchor-Element ersetzt. Vorteile
Das ArchivHier können Sie die entsprechenden Dateien (ISO und UTF-8) downloaden, ähnlich wie sie auf dieser Website zum Einsatz kommen und die hier erwähnten Techniken umsetzen: Zum Herunterladen bitte einloggen. |
IE6 und UTF-8Es gibt eine leidige Schwäche in IE6 wie folgt: Wenn eine HTML-Datei als UTF-8 serviert wird, dann liest IE6 eine includierte JavaScript-Datei auch als UTF-8, auch wenn sie per HTTP-Header eindeutig als in ISO-8859-1 angegeben wird. Enthält die ISO-Datei dann auch deutsche Umlaut-Zeichen in einer String-Konstante stolpert IE6 und meint dass die Konstante nicht abgeschlossen sei. Abhilfe:
Das Archiv enthält eine Variante "ajaxutf8". Sie unterscheidet sich von der ISO-Fassung wie folgt:
Man kann Apache anweisen, Dateien mit bestimmten Endungen mit Charset-Headers zu versehen (z.B. "AddCharset UTF-8 .html" und "AddCharset UTF-8 .js"), oder gleich alles über einen Kamm scheren: "AddDefaultCharset UTF-8". Zu sehen unter: www.timreeves.de/ajaxutf8 |
