function doSomethingWith(param)
{
document.body.addEventListener(
'scroll',
function()
{
document.write(param);
},
false
); // An event that I want to remove later
}
setTimeout(
function()
{
document.body.removeEventListener('scroll', HANDLER ,false);
// What HANDLER should I specify to remove the anonymous handler above?
},
3000
);
doSomethingWith('Test. ');
87
Antworten:
Das kannst du nicht. Sie müssen eine benannte Funktion verwenden oder die Referenz irgendwie speichern.
Am besten tun Sie dies strukturiert, damit Sie verschiedene Handler identifizieren und entfernen können. Im obigen Beispiel konnten Sie natürlich nur den letzten Handler entfernen.
Aktualisieren:
Sie können Ihren eigenen Handler-Handler erstellen (:)):
Dann können Sie es verwenden mit:
DEMO
quelle
i
undlisteners
"privat".Sie können nicht, Sie benötigen einen Verweis auf die Funktion:
quelle
var fn = function(event){ document.write(param); };
Sie können dies auch so tun:
Dann können Sie den Ereignis-Listener folgendermaßen entfernen:
quelle
const disposerFn = () => { scope.removeEventListener(type, handler, capture); }
disposerFn.type = type;
return disposerFn;
Wenn Sie den IE nicht unterstützen müssen, können Sie die Option einmal verwenden
quelle