Saya memiliki objek yang memiliki metode di dalamnya. Metode ini dimasukkan ke dalam objek di dalam fungsi anonim. Ini terlihat seperti ini:
var t = {};
window.document.addEventListener("keydown", function(e) {
t.scroll = function(x, y) {
window.scrollBy(x, y);
};
t.scrollTo = function(x, y) {
window.scrollTo(x, y);
};
});
(ada lebih banyak kode, tapi ini cukup untuk menunjukkan masalahnya)
Sekarang saya ingin menghentikan pendengar acara dalam beberapa kasus. Oleh karena itu saya mencoba melakukan removeEventListener tetapi saya tidak tahu bagaimana melakukan ini. Saya telah membaca di pertanyaan lain bahwa tidak mungkin memanggil removeEventListener pada fungsi anonim, tetapi apakah ini juga yang terjadi dalam situasi ini?
Saya memiliki metode yang dibuat di dalam fungsi anonim dan oleh karena itu saya pikir itu mungkin. Terlihat seperti ini:
t.disable = function() {
window.document.removeEventListener("keydown", this, false);
}
Mengapa saya tidak bisa melakukan ini?
Apakah ada cara lain (baik) untuk melakukan ini?
Info bonus; ini hanya harus bekerja di Safari, maka dukungan IE hilang.
(Elem.setUserData('eventListener', function(e){console.log('Event fired.');}, null);
lalu lakukan Elem.addEventListener ('event', Elem.getUserData ('eventListener'), false); ... dan sama untuk removeEventListener. Semoga Anda bisa melihat ini dengan baik.