if (obj.attachEvent) {...}
ブロックのコードが混乱しています。このページを見てこの例を見つけました:http://codebits.glennjones.net/cheatsheet/javascript.htm#eventsイベントをDOM要素に追加するときに、このコードはどのように機能しますか?
とにかく、コードが何をしているのか説明できますか?私はobj
がDOM要素であると仮定しています。type
はイベントタイプ(click
またはhover
など)で、fn
はコールバック関数です。
function addEvent(obj, type, fn) {
if (obj) {
if (obj.attachEvent) {
obj['e' + type + fn] = fn;
obj[type + fn] = function() { obj['e' + type + fn](window.event); };
obj.attachEvent('on' + type, obj[type + fn]);
} else {
obj.addEventListener(type, fn, false);
}
}
};
私は常にブラウザ間イベントの添付ファイルを(jQueryなしで)次のコードを使用します。上記のアプローチは、私のやり方よりも優れていますか?あなたはattachEvent
は、エクスプローラの関数であり、私たちはこのようにリスナーを追加する場合、関数が呼び出されたときthis
を参照してくださいなるかわからない知っているように
if (obj.attachEvent) { //if the browser supports the attachEvent method
obj['e' + type + fn] = fn; //store the handler
obj[type + fn] = function() { obj['e' + type + fn](window.event); }; //create the callback that invokes the handler stored above
obj.attachEvent('on' + type, obj[type + fn]); //Attach an event handler to the on<event>, such as onclick
} else {
obj.addEventListener(type, fn, false); //otherwise, default to browsers supporting addEventListener
}
興味深い...私はそれが理にかなっていると思う。 – Hristo