0

私は以下のコードを書きました。<IE9

<script>
    function eventH(event) {
        alert(this);
    }
</script>

<img src="h300.png" onload="eventH(arguments[0]);"/>

イベント ハンドラーを起動しますが、event未定義で、this値は親オブジェクトです。なんで?

IEはこれを別の方法で処理しますか、それとも私はこれを理解するのにどこか間違っていますか?

4

1 に答える 1

3

Internet Explorer 8以下は、W3Cイベントモデルを実装していません。IEの場合、必要なものは代わりにの一部である可能性がありますwindow.event

QuirksModeは、最新のブラウザーと古いIEバージョンの両方と互換性のあるイベント処理コードを作成する方法の良い例を示しています。

また、ドット表記を使用せずにJavaScript関数を呼び出すと、グローバルウィンドウオブジェクトはthis(この場合はアクセスthisが許可されないES5 strictモードを除く)であることに注意してください。this代わりに、引数として関数に渡すことができます。

ただし、HTMLで指定するのではなく、 .addEventListener()(W3Cモデル)または.attachEvent()(Microsoftモデル)を使用してイベントハンドラーをアタッチする方がよい場合があります。その後、this期待どおりに動作します。

于 2013-01-07T12:12:39.217 に答える