You need to enable JavaScript to run this app. Vue 中@keydown.ctrl 正常触发但@keyup.ctrl 修饰符失效的原因是什么
优惠活动
大模型
产品
解决方案
定价
更多

Vue 中@keydown.ctrl 正常触发但@keyup.ctrl 修饰符失效的原因是什么

自定义Vue上下文菜单开发需求
  • 开发带自定义上下文菜单的VueJS应用,需实现的核心交互逻辑:
    • 鼠标悬停在页面指定元素上时,弹出动态上下文菜单,菜单内容随当前悬停元素的不同动态切换
    • 用户按住Ctrl键时,已弹出的菜单将切换为静态状态,支持用户与菜单项进行正常交互
开发过程中的异常问题
  • 键盘事件绑定存在触发异常:
    • @keydown.ctrl绑定的按下Ctrl键逻辑可正常按预期触发,但对应的@keyup.ctrl绑定的松开Ctrl键逻辑完全无响应
    • 尝试添加.exact、.capture等事件修饰符,均无法解决keyup事件无响应的问题
    • 测试发现,将@keyup.ctrl替换为@keyup.control后,松开Ctrl键的对应逻辑可以正常触发;但反过来,在keydown事件上使用@keydown.control无法生效,始终无法理清keydown与keyup两个事件的差异,为什么二者需要适配不同的按键修饰符
问题场景对应的根元素代码示例
<div
  tabindex="0"
  @keydown.esc.exact="() => (displayContext = false)"
  @keydown.ctrl.exact="() => (keepContext = true)"
  @keyup.control="() => (keepContext  = false)"
>
  <!-- 页面实际业务内容 -->
</div>

内容的提问来源于stack exchange,提问作者SnazzyPencil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.07 23:06:03