在 HTML5 本机拖动期间检测 keydown/up 事件

发布于 2024-12-03 04:34:56 字数 292 浏览 2 评论 0原文

我有一个可以使用本机 HTML5 拖动的元素。它具有分配给它的dragstart、drag 和dragend 事件侦听器。此外,我还为 document.body 元素分配了 keydown 和 keyup 事件侦听器。

当拖动可拖动元素时,ondrag 事件将按预期触发。当我按 &在不拖动任何东西的情况下释放任意键,将触发 document.body keydown/up 事件。

但是,如果我在执行 ondrag 时按下/向上键,则 document.body keydown/up 事件将不会触发。有什么解决方法/黑客吗?

I've an element that can be dragged using native HTML5. It has dragstart, drag, and dragend event listeners assigned to it. In addition, I also have keydown and keyup event listeners assigned to document.body element.

When dragging the draggable element, ondrag event will fire as expected. When I press & release any key while not dragging anything, document.body keydown/up events will fire.

However, if I keydown/up while performing ondrag, the document.body keydown/up event will not fire. Is there any workaround/hack to this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

猫烠⑼条掵仅有一顆心 2024-12-10 04:34:56

回答我自己的问题...来自拖动操作 - MDN:

对于dragenter和dragover事件,dropEffect属性是
初始化为用户请求的效果。用户可以
按修改键修改所需的效果。虽然
使用的具体按键因平台而异,通常是 Shift 和 Control 键
将用于在复制、移动和链接之间切换。

在 HTML5 原生拖动中,唯一可以触发任何操作的按键是修饰键。在 Mac 上,它是选项键和控制键。操作是通过 event.dataTransfer.effectAllowed 捕获的,而不是按键或按键事件。

Answering my own questions... From Drag Operations - MDN:

With the dragenter and dragover event, the dropEffect property is
initialized to the effect that the user is requesting. The user can
modify the desired effect by pressing modifier keys. Although the
exact keys used vary by platform, typically the Shift and Control keys
would be used to switch between copying, moving and linking.

On HTML5 native drag, the only key press that can trigger anything is the modifier keys. On Mac, it's the option key and the control key. Action is captured via event.dataTransfer.effectAllowed, not keypress or keydown events.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文