【发布时间】:2018-02-21 11:51:30
【问题描述】:
我试图通过在拖动元素时观察文档上的 mousemove 事件来移动元素(使用 html5 拖放)。我在父元素的文档上添加了一个 mousemove 侦听器,每当我移动鼠标时就会触发该侦听器,但是一旦我开始拖动另一个子元素,我就会停止看到 mousemove 事件,一旦停止拖动,我就会再次看到这些事件。我在 API (https://developer.mozilla.org/en-US/docs/Web/Events/mousemove) 的任何地方都看不到拖动会禁用这些事件,但我不知道如何从我的代码中阻止它们。这只是 html5 拖放的一部分,它会在拖动时禁用 mousemove 事件吗?
我正在使用 angular2 来检测 mousemove。我尝试了两种不同的方法:
1)
@HostListener('document:mousemove', ['$event'])
onMouseMove(event) {
console.log('Global mousemove: ', event);
}
2)
constructor(
public element: ElementRef,
private renderer: Renderer2) {
element.nativeElement.draggable = true;
}
this.mouseMoveListener = this.renderer.listen('document', 'mousemove', this.onMouseMove.bind(this));
【问题讨论】:
-
可能你把元素拖到了监听元素区域之外?
-
我在整个文档上监听 mousemove,并且在拖动时我没有离开浏览器窗口。
-
这能回答你的问题吗? Getting mouse position while dragging (JS + HTML5) - TL;DR,您可以使用
dragover事件,该事件似乎具有良好的性能,并且在鼠标移动时触发
标签: angular drag-and-drop