У мене є об'єкт, в якому є методи. Ці методи поміщаються в об'єкт всередині анонімної функції. Це виглядає приблизно так:
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);
};
});
(код набагато більше, але цього достатньо, щоб показати проблему)
Тепер я хочу зупинити слухача подій у деяких випадках. Тому я намагаюся зробити removeEventListener, але я не можу зрозуміти, як це зробити. Я в інших питаннях читав, що неможливо викликати deleteEventListener на анонімних функціях, але чи так це в цій ситуації?
У мене є метод t, створений всередині анонімної функції, і тому я вважав, що це можливо. Виглядає так:
t.disable = function() {
window.document.removeEventListener("keydown", this, false);
}
Чому я не можу цього зробити?
Чи існує інший (хороший) спосіб зробити це?
Інформація про бонуси; це має працювати лише в Safari, отже, відсутня підтримка IE.
(Elem.setUserData('eventListener', function(e){console.log('Event fired.');}, null);
userdata функцію anon, а потім виконайте Elem.addEventListener ('event', Elem.getUserData ('eventListener'), false); ... і те саме для removeEventListener. Сподіваюся, ви зможете побачити це добре.