重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

・イベントハンドラに下記記述があるのですが、どういう意味でしょうか?
  if (window.event) {
  event = window.event;
  }

A 回答 (2件)

イベントハンドラは、発生したイベントの詳細を知りたい場合があります。


たとえば「画像をクリックした際の座標」が必要な場合です。

むかーしのブラウザでは、こう書いていました
イベントの詳細はグローバル変数である window.event で調べています

<img src=hoge.jpg onclick="alert(window.event.offsetX + ',' + window.event.offsetY)">

その後、マルチスレッド安全性とか整合性とかのために、
イベントの詳細はイベントハンドラの引数で調べられるようになりました

要素.onclick = function(event){
 alert(event.clientX + ',' + event.clientY);
};

ですが、ブラウザによっては引数に渡さない仕様のままだったので、
安全の為に以下の様に記述するようになりました。

要素.onclick = function(event){
 event = event? event: window.event; // 引数がないならグローバル変数を取る
 alert(event.clientX + ',' + event.clientY);
};

というわけで、「昔のクロスブラウザ対策におけるイベントの詳細の取り方」と推測します。


ちなみに現在では、すべてのブラウザで以下の記述になります。

要素.addEventListener('click', function(event){
 alert(event.clientX + ',' + event.clientY)
}, false);
    • good
    • 0
この回答へのお礼

回答&詳しい解説ありがとうございました。
大変勉強になりましたー

お礼日時:2014/04/27 12:18

もしも window.event が取得できたら


変数eventの値をwindow.eventに置き換える

っていう意味よ

window.eventがundefinedの場合
if文はfalseになるの


http://d.hatena.ne.jp/unageanu/20070705/1183627496

この辺にif文の中に入っているものによって
trueなのかfalseなのかが一覧されているので参考にするといいと思うわ
    • good
    • 0
この回答へのお礼

回答ありがとうございましたー

お礼日時:2014/04/27 12:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!