【问题标题】:Is it possible to use the TinyMCE addShortcut API to map an event to the ESC key?是否可以使用 TinyMCE addShortcut API 将事件映射到 ESC 键?
【发布时间】:2025-12-21 05:55:11
【问题描述】:

我一直在使用 TinyMCE v5。我想添加一个绑定到 ESC 键并覆盖该键的任何编辑器默认设置的快捷方式。

使用他们的文档,我尝试了他们的 tinymce.editor.addShortcut 和 tinymce.Shortcuts.add API: https://www.tiny.cloud/docs/advanced/keyboard-shortcuts/#addcustomshortcutstotinymce

对于“模式”参数,我尝试了“esc”、“Esc”、“Escape”的每种组合,并使用其他 s/o 响应尝试将键码本身设置为“27”。使用键码实际上会向 editor.shortcuts.shortcuts 对象添加一个元素,但它不会在按键时触发。所有其他模式甚至都不会添加到对象中。

如果我设置一个 'keydown' 事件,我似乎可以完成同样的事情,但理想情况下我想为此使用他们的 API。

有人知道我是否遗漏了什么吗?下面是一个代码笔,当您按下退出键时,它应该将突出显示颜色更改为黄色。 (取自小文档并针对我的场景进行了修改)

Code Pen

JS

tinymce.init({
  selector: 'textarea#custom-shortcut',
  height: 300,
  setup: function (editor) {
    editor.addShortcut(
      '27', 'Add yellow highlight to selected text.', function () {
      editor.execCommand('hilitecolor', false , '#FFFF00');
    });
  },
  content_style: 'body { font-family:Helvetica,Arial,sans-serif; font-size:14px }'
});

HTML

<textarea id="custom-shortcut">
  <p>To add a yellow highlight to this text:</p>
  <ul>
    <li>Select some text
     <ul>
       <li>On PC, press: Ctrl+Alt+Y</li>
        <li>On MacOS, press: Command+Option+Y</li>
      </ul>
    </li>
  </ul>
</textarea>

【问题讨论】:

    标签: javascript tinymce tinymce-5


    【解决方案1】:

    使用27 是正确的,但我认为您不能单独使用addShortcut 来完成此操作,因为 Esc 是一个非常特殊的键,即使与 Shift 等修饰符一起使用也是如此Ctrl

    【讨论】:

    • 根据我的经验,这是正确的答案。我必须为 esc 键添加我自己的自定义快捷键逻辑