Navigator:canShare() 方法
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Navigator
接口的 canShare()
方法在对 navigator.share()
的等效调用能够成功时返回 true
。
如果数据无法通过验证,该方法将返回 false
。数据可能无效的原因包括:
data
参数已被省略或仅包含具有未知值的属性。请注意,用户代理无法识别的任何属性都会被忽略。- URL 格式错误。
- 指定了要分享的文件但用户代理实现不支持文件共享。
- 共享了将被用户代理视为“恶意共享”的指定数据。
Web 共享 API 受 web-share 权限策略限制。如果支持该权限但尚未授予,则 canShare()
方法将返回 false
。
语法
js
canShare()
canShare(data)
参数
返回值
如果指定的 data
参数可以等效成功调用 Navigator.share()
方法,则返回 true
,否则返回 false
。
示例
发送 MDN URL
该示例使用 navigator.canShare()
来检查 navigator.share()
是否可以共享指定的数据。
HTML
HTML 部分只是创建一个段落来显示测试结果。
html
<p class="result"></p>
JavaScript
js
let shareData = {
title: "MDN",
text: "在 MDN 上学习 Web 开发!",
url: "https://developer.mozilla.org",
};
const resultPara = document.querySelector(".result");
if (!navigator.canShare) {
resultPara.textContent = "不支持 navigator.canShare()。";
} else if (navigator.canShare(shareData)) {
resultPara.textContent =
"支持 navigator.canShare()。我们可以使用 navigator.share() 来发送数据。";
} else {
resultPara.textContent = "指定的数据无法共享。";
}
结果
下面的框应说明该浏览器是否支持 navigator.canShare()
,如果支持,我们是否可以使用 navigator.share()
来共享指定的数据:
特性检测示例
此方法功能测试特定数据属性是否有效且可共享。如果与单个 data
属性一起使用,则仅当该属性有效并且可以在平台上共享时才会返回 true
。
下面的代码演示了验证数据属性是否受支持。
js
// 可能不支持的功能
let testShare = { someNewProperty: "要共享的数据" };
// 使用新数据属性的复杂数据
const shareData = {
title: "MDN",
text: "在 MDN 上学习 Web 开发!",
url: "https://developer.mozilla.org",
someNewProperty: "数据共享",
};
// 共享之前测试新数据属性是否有效且受支持
if (navigator.canShare(testShare)) {
// 使用 navigator.share() 共享“shareData”
} else {
// 处理新数据属性无法共享的情况。
}
规范
Specification |
---|
Web Share API # canshare-data-method |
浏览器兼容性
BCD tables only load in the browser