У меня есть объект, в котором есть методы. Эти методы помещаются в объект внутри анонимной функции. Это выглядит так:
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, но я не могу понять, как это сделать. Я читал в других вопросах, что невозможно вызвать removeEventListener для анонимных функций, но так ли это в этой ситуации?
У меня есть метод в t, созданный внутри анонимной функции, и поэтому я подумал, что это возможно. Похоже на это:
t.disable = function() {
window.document.removeEventListener("keydown", this, false);
}
Почему я не могу это сделать?
Есть ли другой (хороший) способ сделать это?
Информация о бонусе; это должно работать только в Safari, поэтому отсутствует поддержка IE.