设想:
在浏览网页寻找 Javascript 自定义事件的解决方案时,我找不到任何实际示例,甚至 MDN 资源也非常有限。
我正在尝试重建paperjs 的 onMouseDrag 事件。我的预期用途是用于类似绘画的 Web 应用程序。
onMouseDrag 事件在以下情况下触发:
- 鼠标左键按下
- 鼠标在移动
目标:
这里的目标不是有一个工作onMouseDrag
事件。目标是对如何创建CustomEvent
. 该onMouseDrag
事件仅作为示例。
要求:
- 答案应该是vanilla-js或纯 js。(没有 jQuery 或任何其他库)
- 答案应该使用
new CustomEvent()
ornew Event()
,而不是任何不推荐使用的方法。 - 当 mousedrag 被调用时,传递的事件参数应该与mousemove 接收的事件参数相同。
代码:
我试过以下
var onMouseDrag = new CustomEvent('mousedrag'),
elem = document.getElementById('element'),
mousedown = false;
elem.addEventListener('mousedrag', function (event) {
// The event argument passed should be
// the same event as the event passed by any other mouse event.
// Do something while the mouse is being dragged.
});
elem.addEventListener('mousedown', function (event) {
mousedown = true;
});
elem.addEventListener('mouseup', function (event) {
mousedown = false;
});
elem.addEventListener('mousemove', function (event) {
if (mousedown) {
elem.dispatchEvent('mousedrag');
// Pass the event variable to the dispatched mousedrag.
}
});