- ベストアンサー
イベントハンドラに下記記述があるのですが、どういう
・イベントハンドラに下記記述があるのですが、どういう意味でしょうか? if (window.event) { event = window.event; }
- みんなの回答 (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);
その他の回答 (1)
- askaaska
- ベストアンサー率35% (1455/4149)
もしも window.event が取得できたら 変数eventの値をwindow.eventに置き換える っていう意味よ window.eventがundefinedの場合 if文はfalseになるの http://d.hatena.ne.jp/unageanu/20070705/1183627496 この辺にif文の中に入っているものによって trueなのかfalseなのかが一覧されているので参考にするといいと思うわ
お礼
回答ありがとうございましたー
お礼
回答&詳しい解説ありがとうございました。 大変勉強になりましたー