Ho un oggetto che contiene metodi. Questi metodi vengono inseriti nell'oggetto all'interno di una funzione anonima. Assomiglia a questo:
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);
};
});
(c'è molto più codice, ma questo è sufficiente per mostrare il problema)
Ora voglio fermare il listener di eventi in alcuni casi. Quindi sto cercando di fare un removeEventListener ma non riesco a capire come farlo. Ho letto in altre domande che non è possibile chiamare removeEventListener su funzioni anonime, ma è così anche in questa situazione?
Ho un metodo in t creato all'interno della funzione anonima e quindi ho pensato che fosse possibile. Somiglia a questo:
t.disable = function() {
window.document.removeEventListener("keydown", this, false);
}
Perché non posso farlo?
C'è qualche altro (buono) modo per farlo?
Informazioni bonus; questo deve funzionare solo in Safari, da qui il supporto IE mancante.
(Elem.setUserData('eventListener', function(e){console.log('Event fired.');}, null);
e quindi eseguire Elem.addEventListener ('event', Elem.getUserData ('eventListener'), false); ... e lo stesso per removeEventListener. Spero che tu possa vederlo bene.