当前位置:首页 > JavaScript

js怎么实现组合键

2026-01-31 09:12:11JavaScript

监听键盘事件

在JavaScript中实现组合键功能,主要通过监听键盘的keydownkeyup事件。组合键的核心逻辑是记录当前按下的键,并在特定组合满足时触发相应操作。

js怎么实现组合键

let keysPressed = {};

document.addEventListener('keydown', (event) => {
    keysPressed[event.key] = true;

    // 检测组合键 Ctrl + S
    if (keysPressed['Control'] && event.key === 's') {
        event.preventDefault(); // 阻止默认保存行为
        console.log('Ctrl + S pressed');
    }
});

document.addEventListener('keyup', (event) => {
    delete keysPressed[event.key];
});

使用事件对象的属性

事件对象提供了ctrlKeyshiftKeyaltKeymetaKey等属性,可以直接判断是否按下了这些修饰键。

js怎么实现组合键

document.addEventListener('keydown', (event) => {
    if (event.ctrlKey && event.key === 'c') {
        console.log('Ctrl + C pressed');
    }
});

支持多键组合

如果需要支持多个非修饰键的组合(例如 A + B),可以通过维护一个按下键的集合来实现。

const activeKeys = new Set();

document.addEventListener('keydown', (event) => {
    activeKeys.add(event.key);

    if (activeKeys.has('a') && activeKeys.has('b')) {
        console.log('A + B pressed');
    }
});

document.addEventListener('keyup', (event) => {
    activeKeys.delete(event.key);
});

封装为可复用函数

将组合键检测逻辑封装成函数,方便重复使用。

function registerCombo(comboKeys, callback) {
    const pressedKeys = new Set();

    document.addEventListener('keydown', (event) => {
        pressedKeys.add(event.key.toLowerCase());

        const allPressed = comboKeys.every(key => 
            pressedKeys.has(key.toLowerCase())
        );

        if (allPressed) {
            callback(event);
            event.preventDefault();
        }
    });

    document.addEventListener('keyup', (event) => {
        pressedKeys.delete(event.key.toLowerCase());
    });
}

// 使用示例
registerCombo(['control', 's'], () => {
    console.log('Custom Ctrl + S handler');
});

注意事项

  • 事件阻止:某些组合键(如 Ctrl + S)会触发浏览器默认行为,需调用event.preventDefault()阻止。
  • 大小写敏感:键盘事件中字母键的event.key区分大小写,建议统一转换为小写处理。
  • 清理状态:务必在keyup时清理按键状态,避免残留导致误判。

标签: 组合键js
分享给朋友:

相关文章

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含inpu…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 c…

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…