Я пытаюсь создать собственное событие перетаскивания. Вот мой первоначальный псевдокод, обратите внимание, что я ушел из процесса очистки.Прослушивание вызовов addEventListener для настраиваемого события
var dragEvent = new CustomEvent("drag");
var anArbitrairyElement = document.querySelector(".box");
anArbitrairyElement.addEventListener("drag", function() {
console.log("event received");
});
(function() {
var dragEventListeners = [];
window.addEventListener("mousedown", function (mousedownEvent) {
dragEventListeners.forEach(function (target) {
if (mousedownEvent.target === target) {
window.addEventListener("mousemove", function (mousemoveEvent) {
target.dispatchEvent(dragEvent);
});
}
// ...
});
});
// does something like this exist?
onDragEventAdded(function (listenerElement) {
dragEventListeners.push(listenerElement);
});
}());
Есть ли способ прослушивать вызовы addEventListener без перезаписи самой функции addEventListener? Решение должно закончиться вверх в этом быть возможно
document.querySelector(".someElement").addEventListener("drag", ...);
В противном случае, есть еще один способ, как я мог бы достичь желаемого поведения создания события пользовательского перетаскивания?
Что вы хотите достичь здесь? У вас есть список всех элементов, которые прослушивают ваше настраиваемое событие? – Stepashka
@Stepashka Да, я не знаю, как бы реализовать пользовательское событие перетаскивания в противном случае. – Azeirah
В этом случае ограничение переменной 'dragEventListeners' в области функций - нет. –