Обнаружение событий нажатия клавиш / вверх во время HTML5 собственного перетаскивания - PullRequest
4 голосов
/ 05 сентября 2011

У меня есть элемент, который можно перетаскивать, используя собственный HTML5.Ему назначены прослушиватели событий dragstart, drag и dragend.Кроме того, у меня также есть слушатели событий keydown и keyup, назначенные элементу document.body.

При перетаскивании перетаскиваемого элемента событие ondrag будет запускаться, как и ожидалось.Когда я нажимаю и отпускаю любую клавишу, не перетаскивая ничего, события document.body keydown / up будут срабатывать.

Однако, если я нажму / вверх во время выполнения ondrag, событие document.body keydown / up не сработает.Есть ли какое-нибудь решение этой проблемы?

1 Ответ

1 голос
/ 20 января 2012

Отвечая на мои вопросы ... От Операции перетаскивания - MDN :

При наличии события dragenter и dragover свойство dropEffect инициализируется так, что запрашивает пользователь. Пользователь может измените желаемый эффект нажатием клавиш-модификаторов. Хотя Точные используемые ключи зависят от платформы, обычно это клавиши Shift и Control будет использоваться для переключения между копированием, перемещением и связыванием.

При перетаскивании по HTML5 единственное нажатие клавиши, которое может вызвать что-либо, - это клавиши-модификаторы. На Mac это клавиша выбора и клавиша управления. Действие захватывается через event.dataTransfer.effectAllowed , а не события нажатия клавиши или нажатия клавиши.

...