2010-04-28 5 views
2

Могу ли я перехватить нажатие клавиши в CKEditor (клавише табуляции) и заменить поведение по умолчанию? Я хочу, чтобы ключ табуляции вставлял div с запасом.Intercept CKEditor keystroke

ответ

2
this.editorInstance.on('tab', function(evt){ 

    evt.editor.insertHtml('span style="margin-left: 40px;">&nbsp;</span>'); 

    evt.cancel(); 
    return false; 
}) 
0

Я решил это несколько иначе. Вместо того, чтобы вставлять фиксированный диапазон ширины, я хотел, чтобы вкладки выстраивались в линию по всем строкам. Таким образом, я вставляю символ табуляции (& # 0 9) с форматированием 'pre'. У меня также были трудности с insertHtml(), и мне пришлось использовать комбинацию createFromHtml() и insertElement().

Вот мое решение:

// my editor's id is 'summary' 
CKEDITOR.replace('summary', { ... }); 

var editor = CKEDITOR.instances.summary; 
editor.on('key', function(ev) { 
    if (ev.data.keyCode == 9) { // TAB 
     var tabHtml = '<span style="white-space:pre">&#09;</span>'; 
     var tabElement = CKEDITOR.dom.element.createFromHtml(tabHtml, editor.document); 
     editor.insertElement(tabElement); 
     ev.cancel(); 
    } 
}); 
1

Я использую версию 4.4.7. По крайней мере, здесь можно изменить поведение нажатия TAB только путем редактирования config.js. С помощью этих указаний TAB и значений SHIFT + TAB:

config.keystrokes = 
[ 
    [ 09, 'indent' ], 
    [ CKEDITOR.SHIFT + 09, 'outdent' ] 
];