Ich denke, das ist am besten mit dem Code gefragt:DOM CustomEvent Zuhörer
var event = new CustomEvent("custom", {bubbles: true}); // Create Event
// Create and attach element
var element = document.createElement("div");
document.body.appendChild(element);
element.addEventListener("custom", function(e) {
console.log("listening");
});
// At this point I thought that if the "custom" event were fired that my
// element listing would be triggered with the listener callback.
// But....
document.body.dispatchEvent(event);
// check the console... nothing :(
// the only way I am able to get my element event listener to fire is if
// the element calling the dispatchEvent(event) is the element itself.
element.dispatchEvent(event);
Was mache ich falsch? Ist das so, dass Veranstaltungen funktionieren sollen? Meine Frage ist, wie kann ich ein benutzerdefiniertes Ereignis hören, wenn das Ereignis nicht
dispatchEvent(event)
aus dem Elemente mit dem Hörer Rückruf
element.addEventListener("custom", function(){});
Um das hinzuzufügen ... Sie könnten umgekehrt Ihren Listener stattdessen auf den Dokumentkörper anwenden, und es würde auslösen, ob das Ereignis auf den Körper ODER das Element ausgelöst wird. – relic
@relic - Wenn der Ereignis-Listener auf dem Hauptteil war, würde das Auslösen des Ereignisses auf dem Hauptteil oder einem Kind davon den Ereignishandler auslösen. – adeneo
Rechts. Ich habe es nicht angesprochen, um dich oder irgendwas zu korrigieren, ich habe es nur zum Nutzen des OP aufgezeigt. – relic