我有一个可以使用原生HTML5拖动的元素。它具有分配给它的dragstart,drag和dragend事件侦听器。另外,我还将keydown和keyup事件侦听器分配给document.body元素。
拖动可拖动元素时,ondrag事件将按预期触发。当我按下&释放任何键而不拖动任何东西,document.body keydown / up事件将触发。
但是,如果我在执行ondrag时进行了keydown / up,则不会触发document.body keydown / up事件。这有什么解决方法/黑客吗?
答案 0 :(得分:1)
回答我自己的问题......来自Drag Operations - MDN:
使用dragenter和dragover事件时,dropEffect属性为 初始化为用户请求的效果。用户可以 按修改键修改所需的效果。虽然 使用的确切密钥因平台而异,通常是Shift和Control键 将用于在复制,移动和链接之间切换。
在HTML5原生拖动中,唯一可以触发任何内容的按键是修改键。在Mac上,它是选项键和控制键。通过 event.dataTransfer.effectAllowed 捕获操作,而不是按键或keydown事件。