それはインラインイベントで変数を使用していません。event
この場合は、インライン イベントから呼び出されるbuttonClick関数です。呼び出された関数には、変数への魔法のアクセスはありません(は IE の機能です)。さらに、投稿では、引数が0で呼び出されたため、常に未定義と評価されます。eventwindow.eventbuttonClicke
いずれにせよ、特殊event変数へのアクセスがインラインイベント自体から行われ、イベントオブジェクトが「実際の」イベントハンドラー関数に渡されるため、次のように比較してください。
<input type="button" value="Submit"
onclick="buttonClick(window.event||event)" />
<script type="text/javascript">
function buttonClick(e) {
alert(e.type);
return false;
}
</script>
(jQuery または別のライブラリを使用して均一なイベント アクセスを容易にすることをお勧めしますが、それは別の話です..)
window.event||event汚い小さなトリックであることに注意してください:
IE ではwindow.event、イベント オブジェクトに評価され、式の結果として使用されます (そのためevent) は評価されません。IE 以外のブラウザでwindow.eventは、(誰かが本当に悪いことをしていない限り) undefined と評価されるため、結果はevent変数の結果になります。
これを逆にすると、W3C ローカル変数アプローチevent||window.eventをサポートしていないブラウザー (つまり IE) で ReferenceError が発生します。event