これは完全な重複ではありません。想定される複製と比較して、以下の私の答えを参照してください!
専門用語がかなりずれている可能性がありますので、お気軽に訂正してください。おそらくこれが私が関連するものを見つけることができないように見える理由です。ライブラリはありません。
コールバック関数を呼び出すイベントハンドラーがあります。ファンシーでしょ?IE <9this
では、ハンドラーのオブジェクトはウィンドウです。理由や、正しいオブジェクトにアクセスする方法がわかりません。
if (document.addEventListener){
element.addEventListener(event, callback, false);
} else {
element.attachEvent('on' +event, callback);
}
この部分は機能します。
この部分はしません:
function callback(event){
console.log(this);
}
this
IEではが返されますが、他のすべてのブラウザで関数[object Window]
を呼び出した要素が返されます。callback
これは私の完全なスクリプトから大幅に削減されていますが、これは関連するすべてのものであるはずです。
編集
@metadingsによって提供されるこのリンクattachEvent を使用して呼び出し元オブジェクト( "this")を参照する方法は非常に近いです。ただし、まだ2つの問題があります。
1)とこの関数event object
のDOM element
呼び出しの両方を取得する必要があります。
2)このイベントは委任スタイルで処理されます。イベントを発生させる子DOM要素が存在する可能性があります。つまり、event.target
必ずしも(私の場合は通常ではなく)リスナーを持つ要素であるとは限りません。