8

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

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

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

4

1 回答 1

4

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

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

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

于 2012-01-20T06:03:49.417 回答