社交分享失效的根本原因是服务端未输出正确OG标签且客户端未适配原生分享API。微信/微博等仅解析og:title、og:description、og:image等服务端直出的元标签;navigator.share()需检测兼容性并满足HTTPS+手势触发;SPA必须通过SSR或预渲染确保路由变化后OG标签生效。

og 标签、不处理 shareTarget 或 navigator.share 兼容性,用户点“分享”后大概率只发了个裸链接。
为什么微信/微博/钉钉点分享只显示 URL?
这些 App 内置浏览器(或 SDK)读取页面时,只解析特定元标签,不是靠 HTML 结构或 JS 渲染结果。没写 <meta property="og:title" content="...">,它们就只能回退到 <title> 和域名。
-
og:title、og:description、og:image是基础三件套,缺一不可 - 微信对
og:image要求严格:必须 HTTPS、尺寸建议 1200×630、大小 ≤ 5MB,且需在服务端直出(JS 动态设置无效) - 微博还额外认
weibo:article:author和weibo:webpage:type,设了能提升卡片丰富度
navigator.share() 在 iOS 上为什么报错?
iOS Safari 直到 16.4 才支持 navigator.share(),且仅限 HTTPS + 用户手势触发(比如 click 事件里调用),不满足任一条件就抛 NotSupportedError 或静默失败。
文章转信息图。将文章/笔记转化为手机可读的 HTML 信息图,自动匹配视觉风格。触发场景:文章转图、笔记转图、信息图、转小红书图、做张图、可视化这篇文章、文生图。
- 必须用
if ('share' in navigator)检测可用性,不能直接 try/catch 后就调用 - Android Chrome 支持早,但部分国产厂商浏览器(如 QQ 浏览器、UC)仍返回
false,得降级到复制链接 + 弹浮层引导手动分享 - 传入的
text字段在 iOS 上会被忽略,只用title和url;Android 则三者都可能生效
SPA 页面路由变化后,OG 标签还生效吗?
不生效。社交平台爬虫是服务端渲染(SSR)或静态抓取,不会执行 JS,也不会等 history.pushState 后再读元信息。
- 单页应用必须配合 SSR(如 Next.js、Nuxt)或预渲染(prerender-spa-plugin)生成带对应 OG 标签的 HTML
- 若用客户端路由(如 React Router),
useEffect更新document.head中的meta标签,对爬虫完全无效 - 可加一层简易服务端代理:请求
/share/:id时,Node.js 服务动态注入该 ID 对应的og:标签,再返回纯 HTML


















