それはインラインイベントで変数を使用していません。event
この場合は、インライン イベントから呼び出されるbuttonClick
関数です。呼び出された関数には、変数への魔法のアクセスはありません(は IE の機能です)。さらに、投稿では、引数が0で呼び出されたため、常に未定義と評価されます。event
window.event
buttonClick
e
いずれにせよ、特殊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