首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >vue keydown甚至只在元素处于活动状态时触发

vue keydown甚至只在元素处于活动状态时触发
EN

Stack Overflow用户
提问于 2021-07-09 22:20:37
回答 1查看 73关注 0票数 1

在尝试侦听vuejs中的keydown事件时,我遇到了一个奇怪的问题。

我将一个keydown事件附加到一个包含整个可见区域的div标签上:

代码语言:javascript
复制
<template>
    <div class="layout-wrapper" @keydown="handleKeyDown"> // <--- our keydown event
        <div class="workspace">
            <animation-canvas class="animation-canvas"></animation-canvas>
            <control-panel class="control-panel"></control-panel>
        </div>
        <dock class="dock"></dock>
    </div>
</template>

当它们触发事件时,我使用一种方法来处理它,该方法记录到控制台,然后根据按下的键进行切换:

代码语言:javascript
复制
    handleKeyDown(event: KeyboardEvent) {
        console.log('down');
        switch (event.key) {
            case 'ArrowLeft':
                alert('left');
                break;
            case 'ArrowRight':
                alert('right');
                break;
        }

起初,我以为事件没有触发或侦听器没有正确连接,但后来我发现,只有当我在输入元素处于活动状态时按下keydown时,keydown侦听器才会触发。

这里我漏掉了什么?我已经有一段时间没有做前端工作了,但我非常确定他们的keydown事件不需要选择输入事件(对吗?)

EN

回答 1

Stack Overflow用户

发布于 2021-07-10 02:12:00

我太专注于将所有逻辑都限定到组件元素的范围,以至于我没有想到在全局级别附加侦听器(感谢评论中的建议)。

我使用以下生命周期方法更新了我的组件:

代码语言:javascript
复制
 mounted() {
        document.addEventListener('keydown', this.handleKeyDown);
    },

    beforeDestroy() {
        document.removeEventListener('keydown', this.handleKeyDown);
    },

现在它到处触发所以我很好。谢谢你的帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68318351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档