无需登录 数据私有 本地保存

Web分享API测试 - 调用系统分享面板

15
0
0
0

Web 分享 API 测试工具

测试浏览器原生分享功能 · 调用系统分享面板

正在检测...
快捷填充:
在某些平台上显示为分享卡片的标题
0/500 字符
不包含协议时将自动添加 https://
支持图片、音频、视频、PDF · 需浏览器支持 Web Share Level 2
操作日志
尚无操作记录
API 功能检测
navigator.share(基础分享)
navigator.canShare(能力检测)
文件分享支持(Level 2)
navigator.clipboard(剪贴板降级)
浏览器兼容性参考
浏览器 基础分享 文件分享 平台
Chrome ✓ 支持 ✓ 支持 桌面+移动
Safari ✓ 支持 ✓ 支持 iOS/macOS
Edge ✓ 支持 ✓ 支持 桌面+移动
Firefox ⚠ 部分 ✗ 不支持 桌面端
Opera ✓ 支持 ⚠ 部分 桌面+移动
Android WebView ✓ 支持 ✓ 支持 Android
* 兼容性可能随浏览器版本更新而变化,请以实际检测为准
常见问题与知识点

Web Share API 是浏览器提供的原生 JavaScript 接口,允许网页调用操作系统级别的分享面板。通过 navigator.share() 方法,网页可以将标题、文本、URL 甚至文件分享到用户设备上安装的任何支持分享目标的应用(如社交媒体、即时通讯工具、邮件、备忘录等)。它提供了一种比传统社交媒体分享按钮更原生、更一致的分享体验。

最简单的检测方法是检查 navigator.share 是否存在。对于更精细的检测(如文件分享能力),可以使用 navigator.canShare() 方法。例如:
if (navigator.share) { /* 支持基础分享 */ }
if (navigator.canShare && navigator.canShare({files: [new File([], 'test.txt')]})) { /* 支持文件分享 */ }

常见原因包括:
1. 非 HTTPS 环境:Web Share API 要求页面通过 HTTPS 加载(localhost 除外)。
2. 非用户手势触发:分享必须在用户点击、触摸等直接交互事件中调用,不能在 setTimeout、异步回调中延迟调用。
3. 浏览器不支持:部分浏览器(如某些版本的 Firefox 桌面版)对 API 的支持不完整。
4. 参数格式错误:URL 格式不正确或文件类型不受支持。

基础分享(Level 1)支持:title(标题)、text(文本描述)、url(链接地址)。这三个参数都是可选的,但至少需要提供一个。

进阶分享(Level 2)额外支持 files(文件数组),可分享图片、音频、视频、PDF 等文件。文件分享在移动端浏览器中支持较好,桌面端 Chrome 和 Edge 也已支持。

是的,Web Share API 是安全上下文(Secure Context)API,要求页面通过 HTTPS 加载。不过,localhost(本地开发环境)被视为安全上下文,因此可以在本地开发时正常使用该 API 进行测试。这意味着在生产环境部署时必须使用 HTTPS。

当浏览器不支持 Web Share API 时,可以考虑以下降级方案:
1. 复制到剪贴板:使用 navigator.clipboard.writeText() 将分享内容复制到剪贴板,并提示用户手动粘贴分享。
2. 自定义分享面板:显示包含常见社交媒体分享链接的自定义弹窗。
3. 生成分享链接:为不同平台生成特定的分享 URL(如 Twitter、Facebook 的分享链接格式)。
本工具提供了一键复制功能作为降级选项。

移动端(iOS/Android):分享面板从屏幕底部滑出,显示丰富的应用列表(如微信、WhatsApp、邮件、备忘录等),与原生应用的分享体验完全一致,是 Web Share API 的最佳使用场景。

桌面端:Chrome 和 Edge 在屏幕边缘显示一个较小的分享浮层,列出可用的分享目标(如邮件、Nearby Share、系统应用等);Safari on macOS 调用系统原生分享菜单。桌面端的分享目标通常比移动端少。

1. 原生体验:调用操作系统原生分享面板,用户可以使用设备上安装的任何应用进行分享,不再局限于预设的几个社交平台。
2. 隐私友好:不需要引入第三方 SDK 或跟踪脚本,不会向社交平台泄露用户数据。
3. 始终最新:分享目标列表由操作系统维护,用户安装新应用后自动可用。
4. 代码简洁:只需几行 JavaScript,无需维护多个平台的分享 API。
5. 离线可用:不依赖外部服务,即使没有网络也能触发分享面板(实际分享仍需网络)。