Tengo un objeto que tiene métodos. Estos métodos se colocan en el objeto dentro de una función anónima. Se parece a esto:
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);
};
});
(hay mucho más código, pero esto es suficiente para mostrar el problema)
Ahora quiero detener el detector de eventos en algunos casos. Por lo tanto, estoy tratando de hacer un removeEventListener pero no puedo averiguar cómo hacerlo. He leído en otras preguntas que no es posible llamar a removeEventListener en funciones anónimas, pero ¿es este también el caso en esta situación?
Tengo un método creado dentro de la función anónima y, por lo tanto, pensé que era posible. Se ve como esto:
t.disable = function() {
window.document.removeEventListener("keydown", this, false);
}
¿Por qué no puedo hacer esto?
¿Hay alguna otra (buena) forma de hacer esto?
Información adicional; esto solo tiene que funcionar en Safari, de ahí la falta de compatibilidad con IE.
(Elem.setUserData('eventListener', function(e){console.log('Event fired.');}, null);
y luego haga Elem.addEventListener ('event', Elem.getUserData ('eventListener'), false); ... y lo mismo para removeEventListener. Espero que puedas ver esto bien.