我需要知道在拖动元素时是否按下了 ctrl 键,以更改放置行为(复制与移动)。问题:拖动元素时,mousemove
,keypressed
和其他输入事件不会触发。
如何在拖动时获取 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>