Eu tenho um objeto que contém métodos. Esses métodos são colocados no objeto dentro de uma função anônima. Se parece com isso:
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);
};
});
(há muito mais código, mas isso é o suficiente para mostrar o problema)
Agora, quero interromper o ouvinte de eventos em alguns casos. Portanto, estou tentando fazer um removeEventListener, mas não consigo descobrir como fazer isso. Eu li em outras perguntas que não é possível chamar removeEventListener em funções anônimas, mas isso também acontece nesta situação?
Tenho um método em t criado dentro da função anônima e, portanto, pensei que fosse possível. Se parece com isso:
t.disable = function() {
window.document.removeEventListener("keydown", this, false);
}
Por que não posso fazer isso?
Existe alguma outra (boa) maneira de fazer isso?
Informações de bônus; isso só precisa funcionar no Safari, daí a falta de suporte ao IE.
(Elem.setUserData('eventListener', function(e){console.log('Event fired.');}, null);
e, em seguida, faça Elem.addEventListener ('event', Elem.getUserData ('eventListener'), false); ... e o mesmo para removeEventListener. Espero que você possa ver isso bem.