<?xml version="1.0" encoding="UTF-8"?>
<code>
  <code>function showEMail() {
   var e = [ 'm','y','e','m','a','i','l','@','x','y','z','.','c','o','m' ];
   var s = '';
   for(var i=0; i&lt; e.length; i++) {
      s += e[i];
   }
   document.write('&lt;a href="mailto:' + s + " &gt;' + s + '&lt;/a&gt;');
}</code>
  <comment>Here's a straightforward anti-spam mailto Javavascript function so that email gathering spam robots don't see an email address on a Web page.

In my criteria for an interesting function, the mailto should display and send to the same email address. It should be easy for someone not too technical to change the email address. Here, the email address is: myemail@xyz.com. 

I'm intrigued to see esoteric and clever ways people can refactor this while still keeping it easy for someone not technical to modify the email address.</comment>
  <created-at type="datetime">2008-01-06T22:52:19+00:00</created-at>
  <id type="integer">206</id>
  <language>JavaScript</language>
  <permalink>anti-spam-mailto</permalink>
  <refactors-count type="integer">6</refactors-count>
  <title>Anti-spam Mailto</title>
  <trackback-url></trackback-url>
  <updated-at type="datetime">2009-03-10T17:59:10+00:00</updated-at>
  <user-id type="integer">446</user-id>
  <refactors type="array">
    <refactor>
      <code></code>
      <code-id type="integer">206</code-id>
      <comment>http://www.google.com/search?q=javascript+string+to+array</comment>
      <created-at type="datetime">2008-01-07T01:17:02+00:00</created-at>
      <id type="integer">1385</id>
      <language>JavaScript</language>
      <rating type="integer">0</rating>
      <ratings-count type="integer">0</ratings-count>
      <title>On Anti-spam Mailto</title>
      <user-id type="integer" nil="true"></user-id>
      <user-name>Timmeh</user-name>
      <user-website></user-website>
    </refactor>
    <refactor>
      <code>function showEMail() {
   var e = [ 'myemail','xyz','com' ];
   var s = e[0] + '@' + e[1] + '.' + e[2];
   document.write('&lt;a href="mailto:' + s + " &gt;' + s + '&lt;/a&gt;');
}
</code>
      <code-id type="integer">206</code-id>
      <comment>might this be a little easier for someone less technical to understand how to edit?</comment>
      <created-at type="datetime">2008-01-07T16:09:05+00:00</created-at>
      <id type="integer">1399</id>
      <language>JavaScript</language>
      <rating type="integer">0</rating>
      <ratings-count type="integer">0</ratings-count>
      <title>On Anti-spam Mailto</title>
      <user-id type="integer" nil="true"></user-id>
      <user-name>Matt</user-name>
      <user-website></user-website>
    </refactor>
    <refactor>
      <code>function showEMail(element)
{
   var e = { name: 'myemail',
             domain: 'somedomain',
             extension: 'com' };
   var address = [e.name, '@', e.domain, e.extension].join('');
   $(element).update('&lt;a href="mailto:'+address'"&gt;'+address+'&lt;/a&gt;');
}</code>
      <code-id type="integer">206</code-id>
      <comment>document.write really sucks. This will work with prototype.js, but should be portable to any other js lib, or raw javascript (but why would you do that?).

Just pass in the id of the element you want updated, and this thing will do it (disclaimer: completely untested :)).</comment>
      <created-at type="datetime">2008-01-08T04:34:08+00:00</created-at>
      <id type="integer">1407</id>
      <language>JavaScript</language>
      <rating type="integer">0</rating>
      <ratings-count type="integer">0</ratings-count>
      <title>On Anti-spam Mailto</title>
      <user-id type="integer">2</user-id>
      <user-name>jamesgolick</user-name>
      <user-website>http://jamesgolick.com</user-website>
    </refactor>
    <refactor>
      <code>function showEMail() {
   document.write('&lt;a href="mailto:' + 'myemail' + '&amp;#64;' + 'domain' + '.com' + '" &gt;' + 'myemail' + '&amp;#64;' + 'domain' + '.com' + '&lt;/a&gt;');
}</code>
      <code-id type="integer">206</code-id>
      <comment>Why bother with arrays. Email hunters will have no difficulties parsing array elements or separated strings. Scrambling the array will be something interesting.</comment>
      <created-at type="datetime">2008-01-08T13:12:22+00:00</created-at>
      <id type="integer">1411</id>
      <language>JavaScript</language>
      <rating type="integer">0</rating>
      <ratings-count type="integer">0</ratings-count>
      <title>On Anti-spam Mailto</title>
      <user-id type="integer">449</user-id>
      <user-name>shtruc</user-name>
      <user-website>http://www.supudo.net/</user-website>
    </refactor>
    <refactor>
      <code>function showEMail() {
   var e = [ 'm','y','e','m','a','i','l','@','x','y','z','.','c','o','m' ];
   var s = e.join('');
   document.write('&lt;a href="mailto:' + s + " &gt;' + s + '&lt;/a&gt;');
}</code>
      <code-id type="integer">206</code-id>
      <comment>Simplified original removing the loop.</comment>
      <created-at type="datetime">2008-01-11T15:10:19+00:00</created-at>
      <id type="integer">1478</id>
      <language>JavaScript</language>
      <rating type="integer">0</rating>
      <ratings-count type="integer">0</ratings-count>
      <title>On Anti-spam Mailto</title>
      <user-id type="integer" nil="true"></user-id>
      <user-name>James Seigel</user-name>
      <user-website></user-website>
    </refactor>
    <refactor>
      <code>&lt;html&gt;
&lt;head&gt;
&lt;script type="text/javascript"&gt;
function showEMail(elId, addr) {
   var addr = addr.replace('@del', '@');
   var el = document.getElementById(elId);
   el.href = 'mailto:' + addr;
   el.innerHTML = addr;
}
&lt;/script&gt;
&lt;/head&gt;
&lt;body onload="showEMail('myemail', 'someone@delsomewhere.com')"&gt;
  &lt;a id="myemail"&gt;&lt;/a&gt;
&lt;/body&gt;
&lt;/html&gt;</code>
      <code-id type="integer">206</code-id>
      <comment>Works by adding a unique string after the @ symbol then removing it in js.</comment>
      <created-at type="datetime">2009-03-10T17:59:07+00:00</created-at>
      <id type="integer">150168</id>
      <language>JavaScript</language>
      <rating type="integer">0</rating>
      <ratings-count type="integer">0</ratings-count>
      <title>On Anti-spam Mailto</title>
      <user-id type="integer" nil="true"></user-id>
      <user-name>Rob</user-name>
      <user-website></user-website>
    </refactor>
  </refactors>
</code>
