问题描述
我正在使用 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**
谢谢。
解决方法
我终于找到了解决方案。
包括重新定义全部而不是部分的 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*,... }
我不知道这是否是最优雅的解决方案,但效果很好。
亲切的问候。