我在嘗試構建自定義拖動事件。這是我最初的僞代碼,請注意我將事件清理出去了。正在監聽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'變量限制爲函數作用域是一個否定的。 –