Javascript 限制CKEditor中的特定嵌套
tl;dr我不想在中允许嵌套表 我试图尽可能地限制我的编辑器中允许的html。我试图实施的规则之一是只允许根目录中的表,而绝对不允许嵌套表。这就是我的问题。。。 我尝试过使用Javascript 限制CKEditor中的特定嵌套,javascript,ckeditor,Javascript,Ckeditor,tl;dr我不想在中允许嵌套表 我试图尽可能地限制我的编辑器中允许的html。我试图实施的规则之一是只允许根目录中的表,而绝对不允许嵌套表。这就是我的问题。。。 我尝试过使用允许的内容,禁止的内容配置条目,并尝试更改CKEDITOR.dtd,但到目前为止没有任何效果 // doesnt seem to do anything // CKEDITOR.dtd.$blockLimit.table = 0; // cannot create table at all // CKEDITOR.dtd.
允许的内容
,禁止的内容
配置条目,并尝试更改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
// }
// }
// }
});
我更新了您的,现在它删除了嵌套表标记,但保留了其内容:
CKEDITOR.replace('editor1', {
customConfig: '',
toolbarGroups: [
{ name: 'blocks', groups: [ 'insert'] }
],
removeButtons: 'Image,HorizontalRule,SpecialChar,Blockquote',
disallowedContent: {
tr: {
match: function( element ) {
var parentTableCount = 0;
for (var elem = element.parent; elem; elem = elem.parent)
{
if (elem.name == 'table')
parentTableCount++;
if (parentTableCount > 1)
return true;
}
}
},
table: {
match: function( element ) {
for (var elem = element.parent; elem; elem = elem.parent)
{
if (elem.name == 'table')
return true;
}
}
}
}
});
您可能需要根据自己的需要对其进行调整,因为我的示例主要展示了如何访问父元素。希望能有所帮助。毕竟在dtd中找到了解决方案。从
CKEDITOR.dtd.td
中删除table
导致无法创建表的问题是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'
});
当光标位于表格单元格内时,这将提供灰显按钮的预期结果,而当光标位于主体内时,则提供普通按钮的预期结果
请参阅更新的。您的示例将表格从初始内容中整齐地删除,但在编辑时不会阻止在单元格中添加表格。在编辑
元素时。无论光标在哪里,父项似乎总是未定义的。