6

JavaScript のイベント オブジェクトに関する簡単な質問です。イベント変数を関数に渡そうとしたときに、JavaScript はどのように認識しますか? たとえば、onclickハンドラーを次のように定義すると、次のようになります。

<button onclick='SendMessage(event)'></button>

「イベント」という名前を付けただけで、JavaScript はイベント変数を渡しますか? もしそうなら、イベント変数を渡す目的で予約されている他の変数名は何ですか? (e?ev?など)

この場合、ローカル変数またはグローバル変数に「event」、「e」などの名前を付けることでカバーできますか?

4

1 に答える 1

12

インライン イベントで呼び出す必要があります。はキーワードではなく、JavaScript の予約語でもありません。初期の Netscape エンジニアが決めた変数名にすぎません。eventevent

イベントに提供されるインライン テキストは、次のように効果的にラップされます 1

function (event) {
   // the inline code
}

IE はこのwindow.eventプロパティを使用してイベント情報を渡しますが、名前が一致するため、使用eventすると通常の JavaScript 変数解決によって適切にフォールバックします。

もちろん、関数オブジェクトを直接アタッチする場合、イベント変数は最初のパラメーターにすぎないため、任意の名前を付けることができます。残念ながら、IE のwindow.eventアプローチにも対処する必要があり、引数を呼び出しても対処されeventません。

elm.onclick = function (my_event_name) {
    my_event_name ||= window.event // for IE
    ...
}

(インラインイベントをできるだけ避け、イベントを統合/簡素化するライブラリを使用することをお勧めします。)

ハッピーコーディング!


1この動作については、 HTML 5: イベント ハンドラー、イベント ハンドラーのコンテンツ属性で詳しく説明されています。

[インライン イベント、例: onclick、テキスト] には、解析時に [関数] プロダクションと一致する有効な JavaScript コードが含まれている必要があります。

上で作成したスクリプト実行環境を使用して、関数オブジェクトを作成します.. 関数にevent という単一の引数を持たせます。

于 2012-06-29T16:56:54.490 に答える