我发现了很多关于在 CKEditor 提交数据时过滤完整 HTML 标签的帖子(例如:剥离 SCRIPT、STYLE 等)。我需要过滤的是特定属性,但保留原始标签。
例如,如果用户提交具有 P、DIV 或 SPAN 标签的数据,我很好,但如果他们提交具有 STYLE 属性的 P、DIV 或 SPAN,我需要删除 STYLE 属性。
我似乎找不到这个,但对任何有洞察力的人开放。
您的问题有两种解决方案:
(推荐)高级内容过滤器(ACF)(自 4.1 起):
CKEDITOR.replace( 'editor1', {
allowedContent: 'span div p[id,class]; h1 a img hr table tr td ul ol li[*]{*}(*)'
} );
使用 ACF,您可以精确地指定您的编辑器将接受(生成)哪些标签、哪些属性、类和样式。查看更多关于规则的信息。还可以下载最新的 4.1 版本并使用官方的高级内容过滤器示例。
第二个选项是dataProcessor
(3.x,4.x):
editor.dataProcessor.htmlFilter.addRules( {
elements: {
$: function( element ) { // you can specify p, div etc. here instead of $ (wildcard)
if ( element.attributes.style ) {
console.log( 'Nuke style attr on' element );
delete element.attributes.style;
}
}
}
});