- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:イベントリスナに登録される function(e){} の "e" はeventオブジェクト?)
イベントリスナに登録されるfunction(e){}のeはeventオブジェクト?
このQ&Aのポイント
- イベントリスナに登録されるfunction(e){}のeはeventオブジェクトなのか疑問に思っています。
- 最近実行したコードで、eという引数がeventオブジェクトを渡していると知りました。
- しかし、匿名関数に引数を渡さないとundefinedになるはずなので、どこからe変数が出現したのか不明です。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
イベントハンドラにはイベントオブジェクトが自動的に渡されます。 https://developer.mozilla.org/ja/DOM/event IEではwindowオブジェクトにeventが括り付けられていて参照可能となっているので、(たしか)このような動作はしませんね。
お礼
参考URLをありがとうございます。 > イベントハンドラにはイベントオブジェクトが自動的に渡されます。 下記を読み、関数の第一引数にeventオブジェクトが渡される事がわかりました。 ----- イベントハンドラは DOM のさまざまな element に 関連付けられる可能性があります。 イベントが発生したとき、event オブジェクトが動的に生成され、そのイベントを処理することになっているイベントリスナに逐次的に渡されます。このとき、DOM Event インターフェースは、イベントハンドラの関数の中で、その第一引数としてアクセス可能です。 ----- > IEではwindowオブジェクトにeventが括り付けられていて参照可能となっているので、(たしか)このような動作はしませんね。 IEでは window.event にイベントオブジェクトが入るのですね。 下記コードでIEでも動作させることが出来ました。 ------ <p id='test'>test</p> <!-- IEには window.onclick がないので、bodyを空にしないために適当な要素を入れる --> <script type='text/javascript'> (function(){ if(window.addEventListener){ window.addEventListener ('click', function(e){ console.info(e); for (p in e){ console.info(p + ' = ' + e[p]); } }, false); } else if(window.attachEvent){ document.body.attachEvent('onclick',function(){ alert('Hello!'); console.info(window.event); for(p in window.event){ console.info(p + ' = ' + window.event[p]); // console.info(p =); } }); } })(); </script> ------ おかげさまでeventオブジェクトについてよくわかりました。 ありがとうございました。