DOMとjavascriptを使用してイベントリスナーをいじっていたところ、次のことに気づきました。
function chained(msg) {
console.log(msg, event);
}
function onClick() {
chained('the body was clicked');
}
document.body.addEventListener('click', onClick);
今面白いこと...これは出力されます:
「本体がクリックされました、(MouseEvent)」
それから私は尋ねます、なぜですか? chained
呼び出しで送信せずにイベントオブジェクトを渡すにはどうすればよいですか?
function chained(msg) {
console.log(msg, namedEventObj); //throw error namedEventObj is not defined
}
function onClick(namedEventObj) {
console.log(event); //outputs (MouseEvent);
console.log(nameEventObj); //outputs (MouseEvent);
chained('the body was clicked');
}
document.body.addEventListener('click', onClick);
onClick
関数で渡されるイベントobjをnamedEventObj
として宣言した場合でも、onClick
でのみ使用でき、chained
関数では使用できません。私はこれを手に入れました、そしてこれは私にとって理にかなっています...しかし間違いなくevent
関数で利用できるchained
変数ではありません。
なぜそれがこのように振る舞うのか誰もが知っていますか?
私が考えることができる唯一のことは、イベントは実際にはwindow.event
そしてそれはいくつかのイベントディスパッチとイベントのときにそれ自体を利用可能にします...しかしそれはそれがトリガーされたときにイベントと同時に呼び出された場合、どの要素もそのイベント情報を取得できることを意味しますか?
私はChrome 11.0.xを使用しています
window.event
を介して現在のイベントにアクセスできます。 event
を使用するだけで、暗黙的にwindow.event
にアクセスします。