F.Ko-Jiの「一秒後は未来」ではウェブやSEO、API、RSSといった技術的ネタから、ちょっとした豆知識や梅酒、エンタメ系まで様々な情報を不定期にお届けしています。

F.Ko-Jiの「一秒後は未来」 > Javascript > 画面全体でクリックイベントを監視する

画面全体でクリックイベントを監視する

  • B!
スポンサード リンク

JavaScriptアプリケーションを作るときに最近よく使うテクニックが、「個々のHTML要素ごとにクリックイベントを監視せずに、html要素(もしくはbody要素)のみでクリックイベントを監視する」という方法です。これは「まるごとPerl!」の「livedoor Readerのしくみ」で紹介されていたものです。

Amazon.co.jp: まるごとPerl! Vol.1: 本: 小飼 弾,宮川 達彦,伊藤 直也,川合 孝典,水野 貴明
Amazon.co.jp: まるごとPerl! Vol.1: 本: 小飼 弾,宮川 達彦,伊藤 直也,川合 孝典,水野 貴明

例えば「飲食店検索 - この辺で」では次のようにクリックイベントを監視しています。

window.onload = function() {
 document.getElementsByTagName("html")[0].onclick = HOTPEPPER.clickObserver;
 HOTPEPPER.onload();
}

HOTPEPPER.clickObserver = function(event) {
 event = event || window.event;
 var target = event.target || event.srcElement;
 if (target.id.match(/^(shop|shopimage)_([0-9]+)$/)) {
  var pre = RegExp.$1;
  var num = RegExp.$2;
  if (pre == "shop") {
   HOTPEPPER.openInfoWindow(num, target);
  }
  else if (pre == "shopimage") {
   HOTPEPPER.openInfoWindow(num, document.getElementById("shop_" + num));
  }
  var childNodes = document.getElementById("image-list").childNodes;
  for (var i = 0; i < childNodes.length; i++) {
   if (childNodes[i].id == "shopimage_" + num) {
    childNodes[i].className = 'on';
   } else{
    childNodes[i].className = '';
   }
  }
 }
 else if (target.className == 'close') {
  HOTPEPPER.close();
 }
}

この場合はhtmlタグにonclickを設定してします。クリックイベントが発生するとHOTPEPPER.clickObserverが呼び出されます。そして、イベントが発生した要素(どのエレメントがクリックされたか)を取得し、その要素のid属性の値やclass名をパターンマッチングすることで処理を振り分けています。

この方法は動的にHTML要素が生成される場合に非常に有効です。機能追加なども楽です。もちろん処理の振り分けにはその他の属性も利用できるので、非常に柔軟なイベント処理ができるようになります。可能性は無限大です。

[2010-01-12] RSS フィードの URL が変わりました。お手数ですが RSS リーダーへの再登録をお願いします。
Subscribe with livedoor Reader Add to Google Subscribe with Fastladder My Yahoo!に追加 Bloglinesで閲読登録 はてなRSSに追加 エキサイトリーダーに登録


コメントを投稿

(承認されるまでコメントは表示されません。)

Javascript

English version

前のエントリー: « 2006年に作ったものはすべてJavaScript製だった
次のエントリー: 「そのときは彼によろしく」とアクアリウム・ギャラリー »

トラックバック

このエントリーのトラックバックURL:

タイトル:

URL:

リンク用HTMLタグ:

Agile Media Network

AMN Partner Blog

広告掲載について

東京ナイロンガールズ
最近の注目記事
持っているガジェット
powered by Gadget Party
最近のつぶやき
えもにゅ

↑ 気持ち記録サービス「えもにゅ」です

このブログの読者になる

F.Ko-Jiの「一秒後は未来」 - RSSフィード

クマでもわかるこのブログの便利な更新チェック方法

DailyFeed

あわせて読みたいブログパーツ

フィードメーター - F.Ko-Jiの「一秒後は未来」

月別アーカイブ


<< March 2010
SuMoTuWeThFrSa
 123456
78910111213
14151617181920
21222324252627
28293031 
人気エントリー
TopHatenar
携帯からのアクセスは
QRコード
http://mob.fkoji.com/