You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在LexicalJS中禁用粗体、斜体及所有键盘快捷键?

在Lexical中禁用快捷键的专属实现方式

一、禁用特定快捷键(如粗体、斜体)

Lexical的内置快捷键基于自身命令系统实现,无需操作全局键盘事件监听器,可通过以下两种方式移除指定快捷键:

1. 注册键盘监听器拦截事件

通过registerKeyboardListener监听键盘事件,匹配目标快捷键后阻止默认行为:

editor.registerKeyboardListener((event) => {
  // 禁用粗体快捷键(Ctrl+B / Cmd+B)
  if ((event.ctrlKey || event.metaKey) && event.key === 'b') {
    event.preventDefault();
    return true;
  }
  // 禁用斜体快捷键(Ctrl+I / Cmd+I)
  if ((event.ctrlKey || event.metaKey) && event.key === 'i') {
    event.preventDefault();
    return true;
  }
  return false;
});

2. 取消默认命令绑定

Lexical的快捷键通过KEY_MODIFIER_COMMAND绑定到格式化命令,可直接取消对应绑定:

import { KEY_MODIFIER_COMMAND } from '@lexical/keyboard';

// 取消粗体快捷键绑定
editor.unregisterCommand(KEY_MODIFIER_COMMAND, (payload) => {
  return payload.key === 'b' && payload.modifiers === 'ctrl|meta';
});

// 取消斜体快捷键绑定
editor.unregisterCommand(KEY_MODIFIER_COMMAND, (payload) => {
  return payload.key === 'i' && payload.modifiers === 'ctrl|meta';
});

二、禁用所有快捷键

若要彻底禁用所有内置快捷键,可选择以下方案:

1. 全局拦截快捷键事件

注册键盘监听器,拦截所有带修饰键(Ctrl/Cmd/Alt/Shift)的组合键:

editor.registerKeyboardListener((event) => {
  if (event.ctrlKey || event.metaKey || event.altKey || event.shiftKey) {
    event.preventDefault();
    return true;
  }
  return false;
});

2. 取消所有修饰键命令绑定

直接取消KEY_MODIFIER_COMMAND的所有注册,该命令是Lexical绝大多数快捷键的基础:

import { KEY_MODIFIER_COMMAND } from '@lexical/keyboard';

editor.unregisterCommand(KEY_MODIFIER_COMMAND);

以上方法均基于Lexical自身的API实现,未直接操作全局键盘事件监听器,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 22:47:44