CKEDITOR 4 - dtd:如果我改变了 b 元素的值,其他人也会像 p 元素一样改变

问题描述

我正在使用 CKEDITOR 4,并且向 dtd 添加一个新元素。我的自定义元素可以包含在“p”元素中,但我不希望它可以包含在“b”元素中。然后,现在我有了这个:

alert( !!CKEDITOR.dtd[ 'p' ][ 'mycustomtag' ] ); // **true**

alert( !!CKEDITOR.dtd[ 'b' ][ 'mycustomtag' ] ); // **true**

所以我做了以下事情:

CKEDITOR.dtd.[ 'b' ][ 'mycustomtag' ] = 0;

但在此之后我再次检查并:

alert( !!CKEDITOR.dtd[ 'p' ][ 'mycustomtag' ] ); // **false**

alert( !!CKEDITOR.dtd[ 'b' ][ 'mycustomtag' ] ); // **false**

似乎 b 和 p 元素以某种方式分组...但我想得到这个:

alert( !!CKEDITOR.dtd[ 'p' ][ 'mycustomtag' ] ); // **true**

alert( !!CKEDITOR.dtd[ 'b' ][ 'mycustomtag' ] ); // **false**

我找不到只更改元素 b 的方法...有人知道如何获取吗?

谢谢。

解决方法

我终于找到了解决方案。

包括重新定义全部而不是部分的 dtd 元素(b 和 p),如下所示:

CKEDITOR.dtd.b = { '#': 1,a: 1,abbr: 1,*mycustomtag: 0*,acronym: 1,applet: 1,area: 1,audio: 1,font: 1,i: 1,iframe: 1,... }

CKEDITOR.dtd.p = { '#': 1,*mycustomtag: 1*,... }

我不知道这是否是最优雅的解决方案,但效果很好。

亲切的问候。