В последните си проекти започнах да използвам кратък javascript, когато имейл адресите в уеб сайтовете, трябва да са линкове. В тези случаи, ако са изписани по стандартния начин:
<a href=“mailto:name@domain.com“> тогава адреса в линка лесно ще бъде прихванат от спам ботовете и ще получава съответното количество спам. Самият скрипт изглежда така:
<!-- Anti Spam mailto Javascript -->
<script type="text/javascript">
<!--
emailE=('name' + '@' + 'domain' + '.com')
document.write('<a href="mailto:' + emailE + '">' + emailE + '<\/a>')
//-->
</script>
<!-- End Anti Spam mailto Javascript -->
Имейл адреса е разделен на 4 части „name“, „@“, „domain“ и „.com“, но може да се раздели и на още по кратки части или дори на отделни букви/цифри, след което се събира в един низ, стойността на който от своя страна се придава към следващия ред от скрипта, който създава HTML елемент (хиперлинк) със съответните стойности. По този начин роботите, които не поддържат javascript не успяват да засекат имейл адреса и си спестявате част от огромния спам, който по статистически данни е над 90% от цялата електронна поща в световен мащаб.
Предполагам, че сайтовете са HTML, а не XHTML. Нали в XHTML document.write() е забранено (те че не работи). В момента не мога да измисля, но трябва да има също толкова прост начин без document.write. Един лесен, но не толкова сигурен вариант е да се превърнат някои символи на entities.
Всъщност сайтовете, на които съм го ползвал са XHTML (напр. http://www.ninanik.com/contacts.htm) и си работи коректно, което е малко странно, но след като повдига темата и се разрових малко за информация по въпроса се оказа, че наистина document.write() е забранено в XHTML и има някои заместващи решения, които са доста по-обемни и сложни скриптове. На мен най-близък ми се струва вариант с използването на document.createElement() и при първа възможност ще изпробвам дали ще се получи и ако резултата е положителен ще го добавя към този пост.