Я думаю, что это лучше всего спросил с кодом:DOM CustomEvent слушателей
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);
Что я делаю не так? Это значит, что события предназначены для работы? Мой вопрос, как я слушаю пользовательское событие, когда событие не отправляется
dispatchEvent(event)
от элемента, содержащего слушатель обратного вызова
element.addEventListener("custom", function(){});
Чтобы добавить к этому ... Вы можете, наоборот, применить ваш слушатель к телу документа, и он будет запускать, запускается ли событие на теле ИЛИ элементе. – relic
@relic - конечно, если прослушиватель событий находился на теле, запуская событие на теле или любое его дочернее устройство, он загорелся бы обработчиком событий. – adeneo
Справа. Я не приносил это, чтобы исправить вас или что-то еще, просто указав это на благо OP. – relic