Ограничьте сочетания клавиш в редакторе TinyMCE

Попытка найти, где отключить отдельные сочетания клавиш в версии jQuery редактора TinyMCE. В настоящее время список допустимых ярлыков:

  • Отмена ctrl+z
  • Восстановление ctrl+y
  • Полужирный ctrl+b
  • Курсив ctrl+i
  • Подчеркивание ctrl+u
  • ctrl+1-6 h1-h6
  • ctrl+7 p
  • отделение ctrl+8
  • адрес ctrl+9

В настоящее время надеясь отключать все ярлыки, но Отмену, Восстановление и полужирный. Остальные - unnessary в нашей реализации из-за, он - нежелательное форматирование.

Я, может казаться, не нахожу код, который включает эти ярлыки. Можно ли указать, где найти этот код.

9
задан Hulk1991 27 July 2013 в 07:01
поделиться

2 ответа

Disable Tested in Firefox

Это должно помочь вам начать работу. Возможно, вам понадобится добавить пустые ярлыки для ctrl+u и ctrl+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(){  };
    }
  }
}

Background

Кажется, он определен вокруг строки 2294 из jscripts/tiny_mce/classes/Editor.js (Из полной версии разработки скачать).

Также они хранятся в массиве в переменной Editor.shortcuts. Эти клавиши настраиваются с помощью специальных символов, а затем с помощью кода клавиши, например, вот так: ctrl,,,90.

Но из того, что я могу сказать, кажется, что многие браузеры реализуют свои собственные версии ctrl+b, ctrl+i и ctrl+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');
}

Но если вы посмотрите вокруг, вы увидите, как они его активируют.

Кроме того, посмотрите на метод Editor.addShortcut . Возможно, вы сможете переопределить поведение по умолчанию.

4
ответ дан 4 December 2019 в 11:42
поделиться

Хорошо, так что я смог заставить это работать. Я смог заблокировать Firefox, используя Code Doug выше, чтобы получить IE, чтобы отключить ключ, который я хотел, я должен был добавить этот код после блока кода Дуга.

var $iframe = $('iframe').contents().get(0);

$($iframe).keydown(function(oEvent) {
    //italics (ctrl+i & Cmd+i [Safari doesn't allow you to test for Cmd])
    if (oEvent.keyCode == '73' && (oEvent.metaKey || oEvent.ctrlKey)){
        oEvent.preventDefault();
        return false;
    }

    //underline (ctrl+u & cmd+u [Safari doesn't allow you to test for cmd])
    if (oEvent.keyCode == '85' && (oEvent.metaKey || oEvent.ctrlKey)){
        oEvent.preventDefault();
        return false;
    }
});

Так что в основном Tinymce динамически загружает редактор в качестве iFrame, поэтому я отключил Ctrl + U и Ctrl + I из IFrame. Я то, что пока Iframe закончится загрузка, а затем прикрепите событие клавиши и нюхая для Ctrl + I и Ctrl + I (я также нюхает CMD + I и CMD + U Для Mac [Хотя Safari не позволит вам проверить для CMD в соответствии с этой ссылкой . Все остальное отключено, что мне нужно отключено.

3
ответ дан 4 December 2019 в 11:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: