拦截CKEditor击键

时间:2010-04-28 13:06:39

标签: ckeditor

我可以拦截CKEditor中的击键(Tab键)并替换默认行为吗?我希望tab键插入带边距的div。

3 个答案:

答案 0 :(得分:2)

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

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

    evt.cancel();
    return false;
})

答案 1 :(得分:1)

我使用的是4.4.7版。至少在这里可以通过编辑config.js来改变TAB键击的行为。使用此代码TAB缩进和SHIFT + TAB例外:

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

答案 2 :(得分:0)

我解决了这个有点不同的方式。我希望标签排列在所有线上,而不是插入固定宽度的跨度。所以,我插入一个带有'pre'格式的制表符(&amp;#0 9)。我也遇到了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();
    }
});