Navigator: canShare()-Methode

Limited availability

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

Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.

Die canShare()-Methode der Navigator-Schnittstelle gibt true zurück, wenn der entsprechende Aufruf von navigator.share() erfolgreich wäre.

Die Methode gibt false zurück, wenn die Daten nicht validiert werden können. Gründe, warum die Daten ungültig sein könnten, sind:

  • Der data-Parameter wurde weggelassen oder enthält nur Eigenschaften mit unbekannten Werten. Beachten Sie, dass alle Eigenschaften, die dem Benutzeragenten nicht bekannt sind, ignoriert werden.
  • Eine URL ist schlecht formatiert.
  • Dateien werden angegeben, aber die Implementierung unterstützt kein Datei-Sharing.
  • Das Teilen der angegebenen Daten würde vom Benutzeragenten als ein "feindlicher Teilen" angesehen werden.

Die Web Share API wird durch die Berechtigungsrichtlinie web-share gesteuert. Die canShare()-Methode gibt false zurück, wenn die Berechtigung unterstützt, aber nicht erteilt wurde.

Syntax

js
canShare()
canShare(data)

Parameter

data Optional

Ein Objekt, das die zu testenden Share-Daten definiert. Typischerweise wird ein Objekt mit denselben Eigenschaften an navigator.share() übergeben, wenn dieser Aufruf true zurückgibt.

Eigenschaften, die dem Benutzeragenten unbekannt sind, werden ignoriert; freigegebene Daten werden nur anhand von Eigenschaften beurteilt, die dem Benutzeragenten bekannt sind. Alle Eigenschaften sind optional, aber es muss mindestens eine bekannte Dateneigenschaft angegeben werden, oder die Methode gibt false zurück.

Mögliche Werte sind:

url Optional

Ein String, der eine zu teilende URL darstellt.

text Optional

Ein String, der den zu teilenden Text darstellt.

title Optional

Ein String, der den zu teilenden Titel darstellt.

files Optional

Ein Array von File-Objekten, die die zu teilenden Dateien darstellen.

Rückgabewert

Gibt true zurück, wenn die angegebenen data mit Navigator.share() geteilt werden können, andernfalls false.

Beispiele

Senden der MDN-URL

Das Beispiel verwendet navigator.canShare(), um zu überprüfen, ob navigator.share() die angegebenen Daten teilen kann.

HTML

Das HTML erstellt nur einen Absatz, in dem das Ergebnis des Tests angezeigt wird.

html
<p class="result"></p>

JavaScript

js
let shareData = {
  title: "MDN",
  text: "Learn web development on MDN!",
  url: "https://developer.mozilla.org",
};

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.";
}

Ergebnis

Der untenstehende Kasten sollte angeben, ob navigator.canShare() in diesem Browser unterstützt wird und, wenn ja, ob wir navigator.share() verwenden können, um die angegebenen Daten zu teilen:

Beispiel zur Funktionserkennung

Diese Methode testet, ob eine bestimmte Dateneigenschaft gültig und teilbar ist. Wenn sie mit einer einzelnen data-Eigenschaft verwendet wird, gibt sie nur true zurück, wenn diese Eigenschaft gültig ist und auf der Plattform geteilt werden kann.

Der untenstehende Code zeigt, wie überprüft wird, ob eine Dateneigenschaft unterstützt wird.

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://developer.mozilla.org",
  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.
}

Spezifikationen

Specification
Web Share API
# canshare-data-method

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch