功能
复制前的微信兼容自检
点复制时先扫描产物,逐条列出微信会过滤的写法:内嵌 style 标签、class 依赖、flex 与 grid、绝对定位、writing-mode、mark 标签等八条规则,并给出改法。这是把「发出去才发现坏了」提前到复制那一刻。
复制前自检会扫描即将复制的内容,把微信会过滤的写法逐条列出来,并给出改法。规则一共八条:内嵌 <style> 标签、出现 class、使用 writing-mode、使用 display:flex 或 grid、使用绝对或固定定位、使用 <mark> 标签、用 text-decoration 做下划线、存在空 src 的图片。发现问题的默认动作是列出清单让你决定,不是直接拦住——工具负责把风险说清楚,不替你拍板。
八条规则分别拦什么
| 规则 | 为什么会被拦 | 改法 |
|---|---|---|
内嵌 <style> 标签 | 微信整体丢弃 | 改成全内联样式 |
出现 class | 微信清掉 class,样式随之全失效 | 把样式写进 style 属性 |
使用 writing-mode | 属性被过滤 | 竖排改用表格逐字实现 |
display: flex / grid | 公众号不支持 | 多列改成表格布局 |
position: absolute / fixed / sticky | 被剥离 | 浮层改表格或直接去掉 |
<mark> 标签 | 清洗时被改写 | 改用 <span style="background:…"> |
text-decoration: underline | span 包裹后不可控 | 改用 border-bottom |
空 src 的图片 | 会显示裂图 | 补上地址或删掉图片 |
为什么要做这一步
公众号排版里最贵的一种错,是发出去之后才发现样式丢了。这个错误之所以贵,是因为它同时具备三个性质:不可逆(文章已经推送)、不可见(写的时候一切正常)、不可归因(你以为是工具的问题,其实是产物形态的问题)。
自检把发现时间从「读者打开文章时」提前到「点复制那一刻」。这个提前量带来的是完全不同的处理成本——前者要撤回、要重发、要解释,后者只是在样式面板里改一个开关。
为什么是列出清单而不是禁止复制
因为有些写法是值得赌一把的。最典型的是少数场景下确实需要绝对定位来做一个角标,而你清楚自己的读者主要在用什么客户端。另一种情况是自检本身可能误报——比如你在正文里贴了一段代码,代码内容恰好含有 display:flex 这个字符串。
所以正确的设计不是「禁止」,而是「告知」。工具把每一条风险、它的后果、以及改法同时给出来,剩下的判断交给人。一个把所有可能出问题的写法都禁掉的工具,看起来更安全,实际会把正常的排版需求也一起禁掉。
自检在哪几个环节生效
- 点「复制到公众号」时:主路径,最重要的一次检查。
- 点「复制 HTML 源码」时:同样会检查,因为源码可能被粘进别的编辑器。
- 「渲染源码」面板里:随时可以看到当前产物的审计结果,不用等到复制。
- 文章体检:除了兼容性,还会给出字数、阅读时长、配图密度、长句、生僻字和 emoji 的统计。
常见问题
自检覆盖的是已知会被清洗的写法,这是从微信实际清洗行为推导出来的规则集。但它不能保证所有客户端的行为完全一致——微信的编辑器版本会更新,规则集也需要跟着更新。
自检不阻止复制,误报时点「我知道,仍然复制」即可。如果是代码块里的字符串被误判,这属于已知的假阳性,属正常范围。
生成器本身确实不产出这些写法——自检的真正价值是拦粘贴进来的外部内容。从 Word、网页或别的编辑器复制进来的富文本可能带着这些写法,自检是最后一道闸。
不会。它只做语法层面的检查,不管排版好不好看。视觉判断需要人来看,机器判据只在能明确的那几条上可靠。