При перетаскивании событие mousemove не запускается - PullRequest
0 голосов
/ 07 февраля 2020

Мне нужно знать, была ли нажата ctrlKey при перетаскивании элемента, чтобы изменить поведение капли (Копировать против Переместить). Проблема: при перетаскивании элемента mousemove, keypressed и другие входные события не запускаются.

Как я могу получить фактическое состояние ctrlKey при перетаскивании?

Моя цель состоит в том, чтобы на GUI были элементы блока, которые можно перемещать с помощью перетаскивания. Когда клавиша CTRL нажата, я хочу скопировать вместо перемещения элемента. При включении / выключении я хочу переключать стиль CSS, даже если при перетаскивании не запускается dragover. Отсутствующие события не позволяют мне обнаружить изменение состояния нажатой клавиши 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>
...