在TinyMCE编辑器中限制键盘快捷键

Red*_*ves 9 jquery tinymce

试图在jQuery版本的TinyMCE编辑器中找到禁用单个键盘快捷键的位置.目前允许的快捷方式列表是:

  • ctrl+z 解开
  • ctrl+y 重做
  • ctrl+b 胆大
  • ctrl+i 斜体
  • ctrl+u 强调
  • ctrl+1-6 h1-h6
  • ctrl+7 p
  • ctrl+8 DIV
  • ctrl+9 地址

目前正在寻找禁用所有快捷方式,但撤消,重做和加粗.由于其不需要的格式化,其余部分在我们的实现中是不确定的.

我似乎无法找到启用这些快捷方式的代码.你能指出在哪里找到这个代码.

Amy*_*yth 8

即使这有一个公认的答案,我也会与tinymce4分享我的用法.您只需添加editor.addShortcut('ctrl+u', "", "")init方法中的事件方法,该setup方法将覆盖添加的快捷方式

例:

tinyMCE.init({
    // Your options here
    setup: function(editor) {
        editor.on("init", function(){
            editor.addShortcut("ctrl+u", "", "");
        });
    }
})
Run Code Online (Sandbox Code Playgroud)

您可以ctrl+u在上面的代码中替换您要禁用的任何快捷方式.


Dou*_*ner 4

禁用 Firefox 中的测试

这应该有助于您入门。您可能需要实际添加空快捷方式ctrl+uctrl+i在其他浏览器中禁用它,但此代码已经过测试以禁用 Firefox 中的操作。在tinyMCE初始化运行后运行(我在Firebug中测试了我的):

for(var i in tinyMCE.editors){
  var editor = tinyMCE.editors[i];
  for(var s in editor.shortcuts){
    var shortcut = editor.shortcuts[s];
    // Remove all shortcuts except Bold (66), Redo (89), Undo (90)
    if(!(s == "ctrl,,,66" || s == "ctrl,,,89" || s == "ctrl,,,90")){
       // This completely removes the shortcuts
       delete editor.shortcuts[s];

       // You could use this instead, which just disables it, but still keeps
       // browser functionality (like CMD+U = show source in FF Mac) from interrupting the flow
       // shortcut.func = function(){  };
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

背景

它似乎是围绕(来自完整开发下载)行2294定义的。jscripts/tiny_mce/classes/Editor.js

此外,它们存储在变量的数组中Editor.shortcuts。它们的按键是用特殊字符设置的,然后是按键代码,如下所示:ctrl,,,90

但据我所知,似乎许多浏览器都实现了自己的ctrl+b、 、版本ctrl+ictrl+u并且只有 Gecko 浏览器没有:

// Add default shortcuts for gecko
if (isGecko) {
    t.addShortcut('ctrl+b', t.getLang('bold_desc'), 'Bold');
    t.addShortcut('ctrl+i', t.getLang('italic_desc'), 'Italic');
    t.addShortcut('ctrl+u', t.getLang('underline_desc'), 'Underline');
}
Run Code Online (Sandbox Code Playgroud)

但如果你环顾四周,你就会发现他们是如何实现这一点的。

另外,研究一下Editor.addShortcut方法。您也许能够覆盖默认行为。