CKEditor配置无效:如何阻止编辑器移除HTML标签的id属性?
解决CKEditor移除HTML标签id属性的问题
我来帮你搞定这个CKEditor保留id属性的问题!你遇到的情况大概率是配置项优先级或者ACF(高级内容过滤器)规则冲突导致的,下面给你几个针对性的解决方案:
1. 调整allowedContent配置,避免冲突
你之前同时设置了allowedContent: true和extraAllowedContent: '*[id]',但其实当allowedContent: true时,ACF会被完全禁用,extraAllowedContent的规则根本不会生效。反而有时候CKEditor的默认清理逻辑可能还是会悄悄处理属性,所以可以试试更明确的配置:
$(function () { CKEDITOR.replace('description', { // 明确允许所有标签带有id属性,同时保留常用标签的默认支持 allowedContent: '*[id]; p h1 h2 h3 div span a img', autoGrow_onStartup: true, // 确保没有配置自动移除id属性 removeAttributes: '', // 禁用粘贴过滤器,防止粘贴内容时id被移除 pasteFilter: null }); });
如果想彻底放开所有内容和属性(适合不需要严格过滤的场景),可以直接用:
$(function () { CKEDITOR.replace('description', { allowedContent: true, autoGrow_onStartup: true, removeAttributes: '', pasteFilter: null }); });
2. 检查是否有插件或自定义规则干扰
有些CKEditor插件(比如某些格式化插件)可能会自带内容过滤规则,如果你加载了额外插件,可以尝试暂时禁用它们,测试id是否能保留。另外,检查项目中是否有其他自定义的CKEditor配置代码,可能无意中设置了removeAttributes: 'id'这类规则。
3. 测试源码模式的编辑流程
如果你是在源码模式输入<p id='hello'>Hello</p>后切换到所见即所得模式,id被移除,那大概率是ACF的规则问题;如果是粘贴内容时id消失,那pasteFilter: null的配置应该能解决。
内容的提问来源于stack exchange,提问作者DolDurma
相关产品推荐
相关产品推荐

