Mam obiekt, który zawiera metody. Te metody są umieszczane w obiekcie wewnątrz anonimowej funkcji. To wygląda tak:
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);
};
});
(kodu jest dużo więcej, ale to wystarczy, aby pokazać problem)
Teraz chcę w niektórych przypadkach zatrzymać detektor zdarzeń. Dlatego próbuję zrobić removeEventListener, ale nie mogę dowiedzieć się, jak to zrobić. W innych pytaniach przeczytałem, że nie jest możliwe wywołanie funkcji removeEventListener na funkcjach anonimowych, ale czy tak też jest w tej sytuacji?
Mam metodę in t utworzoną wewnątrz funkcji anonimowej i dlatego pomyślałem, że to możliwe. Wygląda tak:
t.disable = function() {
window.document.removeEventListener("keydown", this, false);
}
Dlaczego nie mogę tego zrobić?
Czy jest jakiś inny (dobry) sposób, aby to zrobić?
Informacje o bonusach; musi to działać tylko w Safari, stąd brak obsługi IE.