分享按钮在桌面 Chrome 里点了没反应,控制台报 navigator.share is undefined,同一份代码在手机上能唤起系统面板。乍看像缓存或者权限的锅,追下去往往不是。
if (navigator.share) {
await navigator.share({ title, url });
} else {
copy(url);
}
追下去是这么回事:Web Share API 只在部分移动浏览器和安全上下文里可用,桌面 Chrome 至今没放开。代码直接调用没有做特性检测,异常被 try 吞掉就成了死按钮。
「navigator.share 兼容」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。
先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。别只看报错的最后一行,往上看几行,真正的起因通常在上面。
同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。
具体做法是,调用前判断 navigator.share 是否存在;不支持时降级到复制链接 或者展开自建分享面板;带图分享前用 canShare 检查 files 支持。
验收就看一点,桌面 Chrome 点分享弹出复制面板,手机上仍然唤起系统分享。
