私は以下のコードに大きな問題があることを理解しています。具体的には、event
パラメータは関数に渡されません。 Chrome、Opera、Safari、Firefox、IEのすべてのコードで、event
の変数が異なるように扱われている理由はわかりません。クロム、オペラ、およびSafariで「イベント」変数にブラウザ間で予期しないアクセスがありますか?
$('#eventBtn').on('click', function() {
console.log(event);
event.preventDefault();
});
上記のコードは動作します。 IEは2行目で失敗し、Firefoxはすぐに失敗します。テストの目的のために、私は少しより多くのより飾られたjsFiddleを作成しました。さまざまなブラウザで上記console.log(event)
の出力:意図したとおりに他のブラウザで予期しない動作を作成するコード化されたとして、それはない働いていたので
Chrome Version 26.0.1410.64 m
MouseEvent {dataTransfer: null, toElement: button#superBtn, fromElement: null, y: 20, x: 33…}Opera Version 12.15
MouseEventSafari Version 6.0.2 (8536.26.17)
MouseEventIE Version 10.0.9200.16540
[object MSEventObj]Firefox Version 20.0.1
ReferenceError: event is not defined
私はクローム、オペラ、およびSafariのこの「機能」により、ビットでした。 IEにはグローバル変数event
がありますが、前述のブラウザとは異なり、現在実行中のイベントにはその変数を割り当てません。 Firefoxにはグローバル変数event
がないため、event
が参照されるとすぐに失敗します。
通常、私はすべてのブラウザで同じように期待通りに失敗するイベント変数を表すためにe
を使用します。なぜ、Chrome、Opera、Safariのグローバル変数がevent
になるのですか?この動作はどこかに記録されていますか?他に、この "機能"を扱うためのアドバイスを何らかの名前を付けて使用するのに、event
を使用しないでください。
あなたの関数は 'event'をパラメータとしてとらないので、' event'を関数コンテキストに定義すべきではありません。 – nullability
可能な重複は、コールバックチェーン内のどこでもアクセス可能なグローバル変数ですか?](http://stackoverflow.com/questions/6426497/is-event-a-global-variable-that-is-accessible-everywhere -inside-the-callback-cha) – Barmar
@nullabilityそれは彼の質問のポイントです:彼はそれが定義されることを期待していませんでしたが、それはほとんどのブラウザにあります。その説明については私がリンクした質問を参照してください。 – Barmar