FirefoxとIEはeventオブジェクトの扱いに違いがあります。
Firefoxのイベントオフジェクトはイベントハンドラの第1引数へ自動的に渡されます。
一方IEはイベントハンドラの引数にイベントオブジェクトを渡しません[1]。
代わりにIEはwoinow.eventオブジェクトを使ってイベントハンドラ内でeventオブジェクトを参照します[2]。
下記のサンプルはクリックされた要素のタイプを表示します。
<pre><code>
<html>
<head>
var handler = function (e) {
var evt;
if (window.event) {
// IE
evt = window.event;
} else {
// Firefox
evt = e;
}
var type = evt.type;
alert(type);
}
/*
* この書き方ではIEでエラーが発生する。
* var handler = function (e) {
* var type = e.type;
* alert(type);
*}
*/
window.onload = function () {
var elm = document.getElementById('sample');
elm.onclick = handler;
}
</script>
</head>
<body>
<p id="sample">eventオブジェクトのサンプルです(イベントハンドラ版1)。</p>
</body>
</html>
1. イベントリスナーの場合はIEも引数にイベントオブジェクトを渡します。
2. イベントリスナーとeventオブジェクト : JavaScriptも参照。
イベントリスナーとイベントハンドラの違いに注意。
No comments yet.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。