CKEditor 4真的为HTML5做好了准备吗
我尝试使用新的CKEditor 4,因为版本3.6中的代码更正无法接受HTML 5这样的有效代码:CKEditor 4真的为HTML5做好了准备吗,html,ckeditor,Html,Ckeditor,我尝试使用新的CKEditor 4,因为版本3.6中的代码更正无法接受HTML 5这样的有效代码: <a href="#"><p>something</p></a> 但新的CKEditor版本仍然修复此代码,所以问题出在哪里?是否需要在配置中将HTML 5设置为默认值?否。CKEditor解析器使用静态DTD。HTML5不能用静态DTD描述,因此目前CKEditor不能支持这种标记 请参阅了解更多信息。有一种可行的方法可以解决这个问题,使用x
<a href="#"><p>something</p></a>
但新的CKEditor版本仍然修复此代码,所以问题出在哪里?是否需要在配置中将HTML 5设置为默认值?否。CKEditor解析器使用静态DTD。HTML5不能用静态DTD描述,因此目前CKEditor不能支持这种标记
请参阅了解更多信息。有一种可行的方法可以解决这个问题,使用xsl将任何未知元素映射到div或span标记,使用原始元素作为类名,然后在提交时将其反转。我们从xml开始一直这样做,而且效果很好。对于将来遇到同样问题的人,我确实提出了一个解决方案,但我并不太高兴,因为应该有一个选项,因为它在中完全有效 在
config.js
文件中,添加以下配置设置:
// Display all children elements allowed in a <a> element.
console.log(CKEDITOR.dtd[ 'a' ]);
// Simply redefine DTD like this:
CKEDITOR.dtd['a']['div'] = 1;
CKEDITOR.dtd['a']['p'] = 1;
CKEDITOR.dtd['a']['i'] = 1;
CKEDITOR.dtd['a']['span'] = 1;
// Check if <div> can be contained in a <p> element.
console.log( !!CKEDITOR.dtd[ 'a' ][ 'div' ] ); // default false
// Check if <a> can be contained in a <div> element.
console.log( !!CKEDITOR.dtd[ 'div' ][ 'a' ] ); // default true
config.protectedSource.push(/[\r\n]|)(
基本上,我们在这里所做的是:
\r
\n
-(]+>)
此正则表达式将停止验证找到的结果,我相信有更好的方法可以做到这一点,因为我不是regexPERT(在您的config.js文件中,添加以下配置设置:
// Display all children elements allowed in a <a> element.
console.log(CKEDITOR.dtd[ 'a' ]);
// Simply redefine DTD like this:
CKEDITOR.dtd['a']['div'] = 1;
CKEDITOR.dtd['a']['p'] = 1;
CKEDITOR.dtd['a']['i'] = 1;
CKEDITOR.dtd['a']['span'] = 1;
// Check if <div> can be contained in a <p> element.
console.log( !!CKEDITOR.dtd[ 'a' ][ 'div' ] ); // default false
// Check if <a> can be contained in a <div> element.
console.log( !!CKEDITOR.dtd[ 'div' ][ 'a' ] ); // default true
//显示元素中允许的所有子元素。
console.log(CKEDITOR.dtd['a']);
//只需重新定义DTD,如下所示:
CKEDITOR.dtd['a']['div']=1;
CKEDITOR.dtd['a']['p']=1;
CKEDITOR.dtd['a']['i']=1;
CKEDITOR.dtd['a']['span']=1;
//检查是否可以包含在元素中。
console.log(!!CKEDITOR.dtd['a']['div']);//默认值为false
//检查是否可以包含在元素中。
console.log(!!CKEDITOR.dtd['div']['a']);//默认值为true
对于Drupal 8,您可以将此代码添加到您的管理主题js中,这不是最好的解决方案,而是功能性的这是他们的票证系统中报告的内容,我不确定您是否正在寻找可以与html5一起使用的替代解决方案,但这里可以提及。现在……没有其他进展,即使发布了最终版本?