拖动时,不会触发mousemove事件

时间:2020-02-07 18:48:55

标签: javascript drag-and-drop mouseevent keyevent ctrl

我需要知道在拖动元素时是否按下了 ctrl 键,以更改放置行为(复制与移动)。问题:拖动元素时,mousemovekeypressed和其他输入事件不会触发。

如何在拖动时获取 ctrl 键的实际状态?

我的目标是在GUI上具有可以通过拖放移动的块元素。当按下CTRL键时,我要复制而不是移动元素。在keyup / down上,即使拖动时没有触发dragover,我也想切换CSS样式。缺少的事件使我无法检测到按下Ctrl键的状态变化。

您可以使用以下语句来重现它。只需按 Ctrl ,拖动按钮,然后拖动并按住Ctrl键即可:由于未触发任何键事件,因此跨度不会得到更新。

const span = document.querySelector('span')
const listener = e => { span.innerText = "Time: " + new Date().getTime().toString() + " e.ctrlKey: " + e.ctrlKey };
document.addEventListener('mousemove', listener);
document.addEventListener('keyup', listener);
document.addEventListener('keydown', listener);
document.addEventListener('keypressed', listener);
mousemove: <span></span><br>

<button draggable="true">
Drag me
</button>

0 个答案:

没有答案
相关问题