はじめに

スパムメール予防対策のため,メールアドレスの半角アットマーク 「@」 を別の文字,例えば 「@ (全角)」 とか 「_at_」 とか,に置き換えての表記をよく見かけます.

メールを送るときは 「@ (全角)」「_at_」 を 「@ (半角)」 に置き換えてね,というヤツです.

まぁ,置き換え作業自体はたいしたことありませんが,そのちょっとしたひと手間を省けるとハッピーかな,個人的に.そんなことについて考え出したのが,このエントリを書く 1時間ほど前のことでした.

で?

次に示すような javascript を書くに落ち着きました.

// include 'prototype.js';
function replaceAtmark( classname, action, replacefrom ) {
  var emailclasses = $$( '.' + classname );
  for( var i = 0; i < emailclasses.length; i++ ) {
    Event.observe( emailclasses[i], action, function() {
      if( this.innerHTML.indexOf( replacefrom ) >= 0 ) {
        this.innerHTML = this.innerHTML.replace( replacefrom, '@' );
      }
    }, false );
  }
}

クラス名が classname な要素に対して action なイベントが発生したとき,その要素内の HTML 文字列について, 文字列 replacefrom を @ に置き換える,というだけものです.

例えば...

<address><a href="mailto:contact☆iwa-ya.net">contact☆iwa-ya.net</a></address>
※ メールアドレスは架空のものです,念のため.

といったコードを

<address class="email"><a href="mailto:contact☆iwa-ya.net">contact☆iwa-ya.net</a></address>
※ メールアドレスは架空のものです,n(ry

のように置き換え,次のようなスクリプトを onload 内とか HTML の最後の方とか無難そうなところに追加します.

replaceAtmark( 'email', 'mouseover', '☆' );

動くかな?

スクリプト追加前.

contact☆iwa-ya.net
※ メールアドレs(ry

スクリプト追加後.マウスオーバーで 「☆」 が 「@」 に置き換えられます.


※ m(ry

おわりに

ソースの文字列自体が置き換わるわけではないので,スクリプト追加前後でスパム対策状況が変化するわけではありませんが,ユーザ側はちょっとハッピーかも,と勝手に思ってみます.

まぁ javascript を切られると元も子もありませんが...

本日の一語: 元も子もない

〔「元」は元金、「子」は利息の意〕利益ばかりか元手まで失う。何もかもすっかりなくす。
もと 【本/元】 – goo 辞書

こうならたいためにも日々精進せねば...

こちらもあわせてどうぞ

Leave a Reply

直近のつぶやきを読み込みちゅう...