E2.18.3paste style residue设计
粘贴外部内容时的样式残留是常见的脏数据来源
别名: 粘贴带格式 · Word paste · 隐形 span
概念解释
从网页、办公套件、即时通讯往富文本里贴,剪贴板往往带着字体名、字号、颜色、行距、空的 span 和条件注释。编辑器若照单全收,正文里就嵌进一份在本产品主题下看不见、导出时却爆炸的样式残留(paste style residue)。人看见「字已经在」,不知道还带了一层外皮。它管的是外来标记如何进槽,不是工具栏按钮多少,也不是降级成纯文本时标题怎么办。
机制
剪贴板的 HTML 是源环境的完整排版快照,不是「纯内容」。默认 paste 把快照嵌进当前文档,主题字体被 Calibri 覆盖,链接带着源站的蓝色和下划线规则,空段落带着 12 磅段后距。清洗过晚(提交时)人已经无法在编辑里看出脏;清洗过猛(剥掉一切)会丢掉真正的链接和列表。残留还具有传染性:在残留块里继续打字,新字继承外来字体,脏数据自己生长。这不是用户「喜欢花哨」,是管道默认复制了错误的层。
边界
内部文档之间互相贴、主题相同,残留可能正是想要保留的格式,清洗会伤。纯文本槽不接收 HTML,残留进不来。「只贴纯文本」若作为唯一选项,结构(链接)也会丢,应用场景是防脏而不是防结构。从电子表格贴表,残留与「要不要表结构」缠在一起,需要单独的表格粘贴策略。
怎么落地
- 默认粘贴成「本编辑器允许的结构 + 本主题样式」,剥掉外来字体、颜色、行距;提供一次「保留源格式」给明确需要的人。
- 粘贴后若做了清洗,不要默默进行;可在状态里说「已按本编辑器格式贴入」。
- 在残留块内键入时,新字应继承本主题,而不是外来 span。
- 验证:从网页和办公软件各贴一段带标题、链接、彩色字的文字,检查 DOM 是否还带着源字体和空 span。再在贴入块末尾打字,看新字是否跟了外来字体。脏还在,清洗就还没卡在入口。