在HTML5本机拖动过程中检测keydown / up事件

wor*_*ran 5 javascript html5 keyevent drag

我有一个可以使用本机HTML5拖动的元素。它具有分配给它的dragstart,drag和dragend事件侦听器。此外,我还将keydown和keyup事件侦听器分配给document.body元素。

拖动可拖动元素时,ondrag事件将按预期触发。当我在不拖动任何东西的同时按下并释放任何键时,将触发document.body keydown / up事件。

但是,如果在执行ondrag时按下/按下,则不会触发document.body按下/按下事件。有什么解决方法/黑客吗?

wor*_*ran 5

回答我自己的问题...来自Drag Operations - MDN

通过dragenter 和dragover 事件,dropEffect 属性被初始化为用户请求的效果。用户可以通过按修饰键来修改所需的效果。尽管使用的确切按键因平台而异,但通常使用 Shift 和 Control 键在复制、移动和链接之间切换。

在 HTML5 原生拖动中,唯一可以触发任何操作的按键是修饰键。在 Mac 上,它是选项键和控制键。操作是通过event.dataTransfer.effectAllowed捕获的,而不是 keypress 或 keydown 事件。