当前位置:首页 > 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实现跳转

使用 window.location 跳转 通过修改 window.location.href 或直接使用 window.location 实现页面跳转,适用于普通跳转或带参数的 URL。 // 方…

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似:…