Email Protection with MooTools Javascript v2

Written by David Walsh on Friday, September 12, 2008


This article may feature code that is no longer best practice in MooTools.
Click here to learn what has changed to make your code framework-compatible.

Earlier this week I posted an article describing how you can protect your email links from spambots using MooTools. After some suggestions, I’ve made some improvements to my system.

The XHTML

	
	<span rel="david|davidwalsh.name" class="email custom-class">Email me!</span>
	

I’ve switched to using a span tag instead of an anchor to prevent search engines from seeing dead links. We put the modified email address in the rel attribute.

The MooTools Javascript


window.addEvent('domready', function() {
	$$('.email').each(function(el) {
		var anchor = new Element('a', {
			href: 'mailto:' + el.get('rel').replace('|','@'),
			'class': el.get('class'),
			'text': el.get('text')
		}).replaces(el);
	});
});

I create an anchor element and replace the span element that was originally there.

Thank you to everyone that shared their ideas — we came up with a better script!


Epic Discussion

Commenter Avatar September 12 / #
Ahmed says:

This version is way cleaner, I assume I can change the pipe to any weirdo special character like &#98237980127r5981327r0981; then do the replace?

Commenter Avatar September 14 / #
neutral says:

Have you tested how effective is it against spam yet?

If it picks up any spam at all, I guess the next step would be to add in ROT13 to your approach.

Commenter Avatar October 12 / #
Thijsvdv says:

Internet explorer 7 doesn’t like the “,” after ‘class’: el.get(‘class’)
That throws an error…

Commenter Avatar March 17 / #
Birke says:

I tried to use this but my Browser does nothing if I click on the E-Mail me text.

David Walsh March 17 / #

@Birke: Works for me.

Commenter Avatar March 19 / #
Wes says:

I had to add ‘text’: el.get(‘text’) to the new anchor element to be able to show the “Email Me” text.

David Walsh March 19 / #

@Wes: Good catch — updated that and compatibility with MooTools 1.3 (removed $each).

Commenter Avatar March 08 / #
Dave says:

Thanks! The only thing i did different was to use title instead of rel. rel isn’t valid in a span.

Be Heard!

I want to hear what you have to say! Share your comments and questions below.

Name*:
Email*:
Website:  


© David Walsh 2007-2010. Contact David Walsh. Powered by the remarkable MooTools javascript framework.