Navigator:canShare() 方法

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

安全上下文: 此项功能仅在一些 支持的浏览器 安全上下文 (HTTPS)中可用。

Navigator 接口的 canShare() 方法在对 navigator.share() 的等效调用能够成功时返回 true

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

  • data 参数已被省略或仅包含具有未知值的属性。请注意,用户代理无法识别的任何属性都会被忽略。
  • URL 格式错误。
  • 指定了要分享的文件但用户代理实现不支持文件共享。
  • 共享了将被用户代理视为“恶意共享”的指定数据。
  • Web 共享 API web-share 权限策略限制。如果支持该权限但尚未授予,则 canShare() 方法将返回 false

    语法

    js
    canShare()
    canShare(data)
    
    data 可选

    定义要测试的共享数据的对象。

    通常,如果此调用返回 true,则具有相同属性的对象将传递给 navigator.share()。用户代理未知的属性将被忽略;共享数据仅根据用户代理理解的属性进行评估。所有属性都是可选的,但必须至少指定一个已知的数据属性,否则该方法将返回 false

    可能的值为:

    url 可选

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

    text 可选

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

    title 可选

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

    files 可选

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

    返回值

    如果指定的 data 参数可以等效成功调用 Navigator.share() 方法,则返回 true ,否则返回 false

    示例

    发送 MDN URL

    该示例使用 navigator.canShare() 来检查 navigator.share() 是否可以共享指定的数据。

    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() 来共享指定的数据: