限制CKEditor中的特定嵌套

red*_*d-X 3 javascript ckeditor

tl; dr我不想在小提琴中允许嵌套表格

我试图尽可能地限制我的CKEditor中允许的html.我试图强制执行的规则之一是只允许根中的表,绝对没有嵌套表.有我的问题...我已经尝试使用allowedContent,disallowedContent配置条目和strait up更改CKEDITOR.dtd,到目前为止没有任何作用.

// doesnt seem to do anything
// CKEDITOR.dtd.$blockLimit.table = 0;

// cannot create table at all
// CKEDITOR.dtd.td.table = 0;

CKEDITOR.replace('editor1', {
    customConfig: '',
    toolbarGroups: [
        { name: 'blocks', groups: [ 'insert'] }
    ],
    removeButtons: 'Image,HorizontalRule,SpecialChar,Blockquote',
    // disallowedContent: {
    //     table: {
    //         match: function( element ) {
    //             no way to access what the parent element is
    //         }
    //     }
    // }
});
Run Code Online (Sandbox Code Playgroud)

试试小提琴!

red*_*d-X 5

毕竟在dtd中找到了解决方案.其中,排除故障table从CKEDITOR.dtd.td导致不能够在所有创建一个表是国际海事组织在CKEditor的一个bug.

CKEDITOR.dtd.td指向同一个对象CKEDITOR.dtd.body和其他一些对象.所以,如果我想改变CKEDITOR.dtd.td 只有我需要的对象引用的副本,并在有效的.

// using Lo-Dash to create a copy of the object
CKEDITOR.dtd.td = _.merge({}, CKEDITOR.dtd.td);
delete CKEDITOR.dtd.td.table;

CKEDITOR.replace('editor1', {
    customConfig: '',
    toolbarGroups: [
        { name: 'blocks', groups: [ 'insert'] }
    ],
    removeButtons: 'Image,HorizontalRule,SpecialChar,Blockquote'
});
Run Code Online (Sandbox Code Playgroud)

当光标位于表格单元格内时,这会产生灰色按钮的所需结果,而当在正文中时,则会产生正常按钮.

查看更新的小提琴.