You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CKEditor 4.5.X及以上版本复制粘贴丢失<div>/<span>标签求助

CKEditor 4.5+ 粘贴保留
和标签的解决方案

核心原因

CKEditor 4.5版本开始引入了Advanced Content Filter (ACF) 和默认启用的粘贴过滤器,这两个机制会比旧版本更严格地清理粘贴内容,你之前的配置没覆盖到这两个关键点。

具体解决步骤

  1. 完善ACF配置,同时允许

    和
    你之前只配置了extraAllowedContent = 'div',漏掉了<span>,而且allowedContent = true有时会被其他规则覆盖,建议明确指定允许的标签及属性:

    config.allowedContent = 'div span p h1 h2 h3 pre; *[*]'; // 允许div、span,以及所有标签的任意属性
    config.extraAllowedContent = 'div span'; // 兜底补充,确保不被过滤
    
  2. 禁用默认粘贴过滤器
    CKEditor默认的粘贴过滤器会在内容进入编辑器前自动清理"不安全"或非标准标签,直接禁用它:

    config.pasteFilter = null;
    

    如果需要保留部分过滤规则,可以更精细地配置,比如config.pasteFilter = 'div span p h1 h2 h3 pre',只允许指定标签通过。

  3. 检查插件干扰
    如果你的编辑器加载了pastefromword或其他粘贴相关插件,可能会额外修改粘贴内容。可以尝试临时禁用这类插件,验证是否是插件导致的标签丢失:

    config.removePlugins = 'pastefromword';
    
  4. 自定义粘贴事件兜底
    如果以上配置都不生效,直接监听粘贴事件手动处理HTML:

    CKEDITOR.on('instanceReady', function(evt) {
        var editor = evt.editor;
        editor.on('paste', function(pasteEvt) {
            // 获取粘贴的原始HTML内容
            var rawHtml = pasteEvt.data.dataValue;
            // 这里可以根据需要修改HTML,比如强制保留div和span
            pasteEvt.data.dataValue = rawHtml;
        });
    });
    

验证方法

修改配置后,清空浏览器缓存重新加载编辑器,再测试从外部网站拖拽粘贴包含

和的内容,确认标签是否保留。

内容的提问来源于stack exchange,提问作者김동원

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 12:27:39