Spamschutz mit JavaScript

Hinweis:
Mit der Verwendung dieser Methode im Impressum von gewerblichen Seiten, verstößt man gegen die Impressumspflicht.
Private Seiten sind laut Telemediengesetz theoretisch ausgeschlossen.
(Podcast zum Thema Impressumspflicht)

Auf einer anderen Seite von mir leide ich sehr stark unter den Spambots, die mir jeden Tag mehrfach Viagra&Co verkaufen wollen. Ich könnte jetzt natürlich den Gegenmittelwitz erzählen, aber das spare ich mir mal.
Am Tag scheitern um die 12 Mails an meinem Spamfilter. Da ich Thunderbird benutze, geht bei mir trotzdem ein PopUp auf und weist mich darauf hin, dass meine Errektion noch nicht gewaltig genug ist.

Ich wollte es bei dieser Seite besser machen und habe mich erinnert, dass es bei Gulli mal einen Thread zu dem Thema gab.

Darin habe ich einen Ansatz gefunden, der auf JavaScript zurückgreift. Dieser hat mir am ehesten zugesagt und ist meiner Meinung nach auch mit der Barrierefreiheit vereinbar.

Der Generator von diplo wandelt eine E-Mailadresse teilweise in HTML-Entities um, speichert sie in Variablen. JavaScript fügt die Adresse wieder zusammen und gibt sie aus.
Leider ist der Code, den man dabei herausbekommt nicht valide, wenn man ihn richtig einbettet.

Er sieht für die E-Mailadresse test@test.de wie folgt aus:

<script type="text/javascript">
var ename = 'tes&#x74;', edomain = '&#x74;es&#x74;&#x2e;d& #x65;';
document.write( '<a href="mailto:' + ename + '@' + edomain + '">' + ename + ' at ' + edomain + '</a>' );
</script>

Das Tool ist für die Verschlüsselung ganz nett, reicht aber nicht aus, wenn man die Adresse in einem <address> oder <p> unterbringen möchte.

Leider dürfen diese nur inline Elemente enthalten. Es darf also nicht das <script> darin vorkommen, wohl aber ein Bestandteil davon sein. Es muss mit ins Script eingebettet werden.

<script type="text/javascript">
//<![CDATA[
document.write( '<address>NAME<br /> ADRESSE<br />');

var ename = 'tes&#x74;', edomain = '&#x74;es&#x74;&#x2e;d&#x65;';
document.write( '<a href="mailto:' + ename + '@' + edomain + '">' + ename + ' at ' + edomain + '<\/a><\/address>' );
//]]>
</script>

Zur Vereinfachung habe ich hier nur NAME und ADRESSE geschrieben. Das muss entsprechend angepasst werden. Natürlich kann man auch hier Entities benutzen.


Nun muss man von dem Ergebnis ein Screenshot machen und speichern. Dieser wird für den <noscript> benötigt, welcher wie folgt aussieht:

<noscript>
<address>
<img src='bg/addr.jpg' title='Impressumsdaten' alt='Für Impressumsdaten aktivieren Sie bitte die Bilderanzeige oder JavaScript!' width='' height='' />
</address>
</noscript>

Das ganze sieht dann ungefähr so aus: