Javascript: Einfacher Spamschutz für E-Mail-Adressen

Einfacher aber effektiver Spamschutz für E-Mail-Adressen mit Javascript und jQuery.
Ist JavaScript deaktiviert, erscheint nur info [at] domain.com.

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">

$(function(){
  $('.email').each(function(index) {
    var s = $(this).text().replace(" [at] ", "&#64;");
    $(this).html("<a href=\"mailto:" + s + "\">" + s + "</a>");
  });
});

</script>

Aus: info [at] domain.com
wird: info@domain.com

Im Quelltext die E-Mail-Adressen in span-Tags mit der Klasse "email" setzen:
<span class="email">info [at] domain.com</span>

D.h. alle Elemente mit der Klasse "email" werden in les- und klickbare E-Mail-Adressen umgewandelt.

Ohne jQuery könnte es z.B. so aussehen:

<script type="text/javascript">

function convertMailAddress() {
  var emailElements;
  if (document.getElementsByClassName)
    emailElements = document.getElementsByClassName("email");
  else
    emailElements = document.getElementsByClassNameForOldies("email");
  var elementContent, replaceContent;
  for (var i=0; i<emailElements.length; i++) {
    elementContent = emailElements[i].innerHTML;
    replaceContent = elementContent.replace(" [at] ", "&#64;");
    emailElements[i].innerHTML =
      "<a href=\"mailto:" + replaceContent + "\">" + replaceContent + "</a>";
  }
}

// http://javascript.about.com/library/bldom08.htm
document.getElementsByClassNameForOldies = function(cl) {
  var retnode = [];
  var myclass = new RegExp('\\b'+cl+'\\b');
  var elem = this.getElementsByTagName('*');
  for (var i = 0; i < elem.length; i++) {
    var classes = elem[i].className;
    if (myclass.test(classes)) retnode.push(elem[i]);
  }
  return retnode;
};

window.onload = convertMailAddress;

</script>

JavaScript jQuery

Mai 2010 | Permalink | Feedback