Hallo,
ich grüble gerade über unserer "Kontakte"-Seite, auf der unsere verschiedenen Email-Adressen über PHP ausgegeben werden.
Da ich unsere Email-Adressen natürlich so ausgeben muss, dass sie weitestgehend nicht von Spambots ausgelesen werden können, habe ich verschiedene, hoffentlich einigermassen sichere Schutzmechanismen eingebaut:
Die Email-Adressen werden, aufgeteilt anhand des @-Zeichens, in umgedrehter Schreibweise und das @-Zeichen zudem in Unicode-Kodierung ausgegeben, so dass zumindest dieses Zeichen beim Kopieren nicht mitkopiert wird. Desweiteren wird in jede Email-Adresse ein im Browser nicht sichtbarer zufälliger Code eingefügt, so dass ich folgenden Quelltext habe:
<body>
<table cellspacing="0">
<tbody>
<tr>
<td>BAND:</td>
<td>
Robert
<span id="E0" class="azsk">
ed.yppupcitoahc
<span class="gLwD">y8GT</span>
<span class="M5L3">tkatnok</span>
</span>
</td>
</tr>
<tr>
<td>MANAGEMENT:</td>
<td>
<span id="S0">Derzeit unbesetzt! Interessiert?</span>
</td>
</tr>
<tr>
<td>BOOKING:</td>
<td>
<span id="S1">Derzeit unbesetzt! Interessiert?</span>
</td>
</tr>
<tr>
<td>WEBMASTER:</td>
<td>
Enrico
<span id="E1" class="azsk">
ed.oohay
<span class="gLwD">y8GT</span>
<span class="M5L3">llelocirne</span>
</span>
</td>
</tr>
</tbody>
</table>
<script type="text/javascript" language="javascript">
if (window.addEventListener)
window.addEventListener("load",Initialisieren,false);
else
if (window.attachEvent)
window.attachEvent("onload",Initialisieren);
else
window.onload=Initialisieren;
</script>
</body>
Bitte nicht über die seltsamen Klassennamen wundern, diese werden von PHP ebenfalls zufällig erzeugt, um es Spambots, die vielleicht schon mit CSS umgehen können, ein Stückchen schwerer zu machen.
Hier der Screenshot der Ausgabe im Browser, einmal normal, einmal alles markiert:
Ich habe die Datei zwar auch hoch geladen, aber da erfolgt seltsamerweise gar keine Ausgabe im Browser.
Ich möchte nun über JavaScript nach Anklicken einer der Email-Adressen die Email-Adressen rekonstruieren und mit ihnen weiter arbeiten.
Hierzu habe ich folgende Funktion gebastelt, die onload ausgeführt wird:
function Initialisieren()
{
var a = 0,
b,
c;
do
{
try
{
b = document.getElementById("E" + a);
if (b !== null)
{
b.onclick = function()
{
alert (typeof b);
c = b.textContent || b.innerText || b.innerHTML;
alert (c);
};
a += 1;
}
}
catch(e){}
}
while (b !== null)
}
Hierbei wird der Variable "b" solange die Referenz auf Elemente mit der ID "E" (für "Email"), gefolgt von einer fotlaufenden Zahl übergeben, bis keine Referenzierung mehr möglich ist.
Der Referenz wird dann das "onclick"-Ereignis zugeordnet und soll eigentlich den Inhalt des angeklickten Elements liefern, was aber leider nicht der Fall ist.
alert (typeof b) liefert mir "object" und läßt mich annehmen, dass die Referenzierung geklappt hat.
Der nachfolgende "alert"-Befehl wird aber nicht mehr ausgeführt und die Firefox-Fehlerkonsole bringt mir für die Zeile c = b.textContent || b.innerText || b.innerHTML; einen "TypeError: b is null".
Was habe ich falsch gemacht?
Vielen Dank für eure Hilfe und Gruß
Enrico