在HTML5本机拖动期间检测keydown / up事件

时间:2011-09-05 16:00:15

标签: javascript html5 drag keyevent

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

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

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

1 个答案:

答案 0 :(得分:1)

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

  

使用dragenter和dragover事件时,dropEffect属性为   初始化为用户请求的效果。用户可以   按修改键修改所需的效果。虽然   使用的确切密钥因平台而异,通常是Shift和Control键   将用于在复制,移动和链接之间切换。

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