过滤 CKEditor HTML 属性

Posted

技术标签:

【中文标题】过滤 CKEditor HTML 属性【英文标题】:filtering CKEditor HTML attributes 【发布时间】:2013-03-20 17:51:31 【问题描述】:

我发现了很多关于在 CKEditor 提交数据时过滤完整 html 标签的帖子(例如:剥离 SCRIPT、STYLE 等)。我需要过滤的是特定属性,但保留原始标签。

例如,如果用户提交具有 P、DIV 或 SPAN 标签的数据,我很好,但如果他们提交具有 STYLE 属性的 P、DIV 或 SPAN,我需要删除 STYLE 属性。

我似乎找不到这个,但对任何有洞察力的人开放。

【问题讨论】:

所以你在服务器上做这个?您使用的是哪种技术? 【参考方案1】:

您的问题有两种解决方案:

    (推荐)Advanced Content Filter (ACF)(从 4.1 开始):

    CKEDITOR.replace( 'editor1', 
        allowedContent: 'span div p[id,class]; h1 a img hr table tr td ul ol li[*]*(*)'
     );
    

    使用 ACF,您可以精确地指定您的编辑器将接受(生成)哪些标签、哪些属性、类和样式。见more about the rules。还可以下载最新的 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;
                
            
        
    );
    

【讨论】:

万一其他人有这个问题,允许的元素用“;”分隔,空格或逗号不起作用。 @Kevin 对。您也可以使用object format 来避免错误。

以上是关于过滤 CKEditor HTML 属性的主要内容,如果未能解决你的问题,请参考以下文章

Asp.net 中怎样使用ckedit 在网上找了很久看了很多的介绍都不行?跪求方法?

移除 CKEditor 实例

Django cms 文本编辑器 (CKEditor) 插件

如何验证ckeditor5 textarea字段所需?

ckeditor 实现 servlet 图片上传 配置

Indentblock CKEditor插件导致包含margin属性的样式不会出现在Styles组合中