Navigator: canShare() 方法

安全上下文:此功能仅在安全上下文(HTTPS)中可用,在某些或所有支持的浏览器中可用。

canShare()Navigator 接口的一个方法,如果等效的调用 navigator.share() 会成功,则返回 true

如果数据无法验证,则该方法返回 false。数据可能无效的原因包括

  • data 参数已省略或仅包含具有未知值的属性。请注意,用户代理无法识别的任何属性都会被忽略。
  • URL 格式错误。
  • 指定了文件,但实现不支持文件共享。
  • 共享指定的数据会被用户代理视为“恶意共享”。

Web 共享 APIweb-share 权限策略的限制。如果支持权限但尚未授予,则 canShare() 方法将返回 false

语法

js
canShare()
canShare(data)

参数

data 可选

一个定义要测试的共享数据的对象。通常,如果此调用返回 true,则会将具有相同属性的对象传递给 navigator.share()

用户代理未知的属性将被忽略;共享数据仅在用户代理理解的属性上进行评估。所有属性都是可选的,但必须指定至少一个已知的 data 属性,否则该方法将返回 false

可能的值为

url 可选

表示要共享的 URL 的字符串。

text 可选

表示要共享的文本的字符串。

title 可选

表示要共享的标题的字符串。

files 可选

表示要共享的文件的 File 对象数组。

返回值

如果指定的 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: "Learn web development on MDN!",
  url: "https://mdn.org.cn",
};

const resultPara = document.querySelector(".result");

if (!navigator.canShare) {
  resultPara.textContent = "navigator.canShare() not supported.";
} else if (navigator.canShare(shareData)) {
  resultPara.textContent =
    "navigator.canShare() supported. We can use navigator.share() to send the data.";
} else {
  resultPara.textContent = "Specified data cannot be shared.";
}

结果

下面的框应该说明 navigator.canShare() 是否在此浏览器上受支持,如果支持,我们是否可以使用 navigator.share() 共享指定的数据。

功能检查示例

此方法功能测试特定数据属性是否有效且可共享。如果与单个 data 属性一起使用,则仅当该属性有效且可以在平台上共享时,它才会返回 true

以下代码演示了如何验证数据属性是否受支持。

js
// Feature that may not be supported
let testShare = { someNewProperty: "Data to share" };

// Complex data that uses new key
const shareData = {
  title: "MDN",
  text: "Learn web development on MDN!",
  url: "https://mdn.org.cn",
  someNewProperty: "Data to share",
};

// Test that the key is valid and supported before sharing
if (navigator.canShare(testShare)) {
  // Use navigator.share() to share 'shareData'
} else {
  // Handle case that new data property can't be shared.
}

规范

规范
Web 共享 API
# canshare-data-method

浏览器兼容性

BCD 表仅在启用 JavaScript 的浏览器中加载。

另请参阅