Ich habe ein Objekt, das Methoden enthält. Diese Methoden werden innerhalb einer anonymen Funktion in das Objekt eingefügt. Es sieht aus wie das:
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);
};
});
(Es gibt viel mehr Code, aber dies reicht aus, um das Problem aufzuzeigen.)
Jetzt möchte ich den Ereignis-Listener in einigen Fällen stoppen. Daher versuche ich, einen removeEventListener zu erstellen, kann aber nicht herausfinden, wie das geht. Ich habe in anderen Fragen gelesen, dass es nicht möglich ist, removeEventListener für anonyme Funktionen aufzurufen, aber ist dies auch in dieser Situation der Fall?
Ich habe eine Methode in t innerhalb der anonymen Funktion erstellt und dachte daher, dass dies möglich ist. Sieht aus wie das:
t.disable = function() {
window.document.removeEventListener("keydown", this, false);
}
Warum kann ich das nicht tun?
Gibt es einen anderen (guten) Weg, dies zu tun?
Bonusinfo; Dies muss nur in Safari funktionieren, daher die fehlende IE-Unterstützung.
(Elem.setUserData('eventListener', function(e){console.log('Event fired.');}, null);
und führen Sie dann Elem.addEventListener ('event', Elem.getUserData ('eventListener'), false) aus. ... und das Gleiche gilt für removeEventListener. Hoffe du kannst das in Ordnung sehen.