Попытка найти, где отключить отдельные сочетания клавиш в версии jQuery редактора TinyMCE. В настоящее время список допустимых ярлыков:
В настоящее время надеясь отключать все ярлыки, но Отмену, Восстановление и полужирный. Остальные - unnessary в нашей реализации из-за, он - нежелательное форматирование.
Я, может казаться, не нахожу код, который включает эти ярлыки. Можно ли указать, где найти этот код.
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
. Возможно, вы сможете переопределить поведение по умолчанию.
Хорошо, так что я смог заставить это работать. Я смог заблокировать 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 в соответствии с этой ссылкой . Все остальное отключено, что мне нужно отключено.