it-swarm.com.de

Ist es möglich, das Freigabemenü auf Smartphones auszulösen (über HTML/JS)?

Gibt es eine Möglichkeit, die Freigabefunktion in lokalen Browsern auf Smartphones über HTML oder JavaScript auszulösen?

Natürlich gibt es viele Dienste, die einen Freigabeknopf bereitstellen. Aber wenn ich z. Wenn Sie eine Website auf Facebook teilen möchten, muss ich in dem Browser, den ich derzeit verwende, bei Facebook angemeldet sein.

Fast alle Browser verfügen über eine eigene Freigabefunktion, die ein Systemmenü zur Auswahl der App auslöst, die Sie für die Freigabe verwenden möchten:

System share menu in Android os

Bei dieser Frage geht es um: Wie wird dieses Menü ausgelöst?

Ich weiß, dass es möglich ist, einen Anruf mit einem bestimmten Präfix im href-Attribut von Links wie tel: oder callto: auszulösen. Vielleicht gibt es auch eine solche Verknüpfung für dieses Freigabemenü? Oder ein Javascript-Code? Oder eine ganz andere Art, wie es geht?

Danke im Voraus.

32
Armin

Meines Wissens gibt es keine solche Implementierung in aktuellen Browsern auf mobilen Betriebssystemen. Da die Frage mich interessierte - eine Google-Suche ergab, dass in dieser Richtung gearbeitet wird:

Entschuldigung - ich kenne keine Problemumgehung.

9
madflow

Es ist mit einem großen Haken möglich. Derzeit nur in Chrome für Android und auf Desktop-Safari verfügbar. http://caniuse.com/#feat=web-share

navigator.share({
    title: document.title,
    text: "Hello World",
    url: window.location.href
}).then(() => console.log('Successful share'))
.catch(error => console.log('Error sharing:', error));

https://developers.google.com/web/updates/2016/10/navigator-share

14
aWebDeveloper

Ich fügte dies hinzu, da alle Antworten bis zum 2018-07-16 veraltet erscheinen.

Es ist möglich, aber nur in wenigen Browsern ( MDN Reference ), durch die einzige Methoden-API in navigator:

navigator
    .share({
        title: document.title,
        text: 'Hello World',
        url: window.location.href
    })
    .then(() => console.log('Successful share! ????'))
    .catch(err => console.error(err));

Referenz von Google: https://developers.google.com/web/updates/2016/10/navigator-share

Außerdem gab es eine Sache mit dem Namen Web Intends , bei der es sich um ein totes Projekt handelt. Sie sollten stattdessen navigator.share verwenden.

5
Machado

Es ist jetzt möglich mit der Web Share API !

Es wird jedoch noch nicht allgemein unterstützt. Derzeit ist es nur in Safari (mobil und auf dem Desktop) und Chrome für Android. Weitere Informationen finden Sie unter Kann ich verwenden .

Laut Einführung der Web Share-API bei Google-Entwicklern sind folgende Punkte zu beachten:

  • ihre Seite muss über HTTPS bereitgestellt werden
  • sie können navigator.share(…) nur als Antwort auf eine Benutzeraktion wie einen Klick aufrufen (d. h., Sie können sie beim Laden der Seite nicht aufrufen).
  • sie sollten die Funktion erkennen, falls sie auf der Plattform Ihrer Benutzer nicht verfügbar ist (z. B. über navigator.share !== undefined)

Im Google Developers-Artikel wird außerdem darauf hingewiesen, dass sich URLs, die mit der Freigabe-API geteilt werden, nicht in Ihrer eigenen Domain befinden müssen. Sie können jede URL teilen.

Wenn Sie das alles zusammenfassen, können Sie so etwas verwenden, bei dem die Freigabe-API verwendet wird, wenn sie verfügbar ist, und wenn nicht, eine E-Mail gesendet wird*:

function createShareButton() {
  const btn = document.createElement("button");

  const title = document.title;
  const text = "Check this out!";
  const url = window.location.href;

  btn.innerText = "share" in navigator ? "Share" : "Share via e-mail";

  btn.onclick = () => {
    if (navigator.share !== undefined) {
      navigator
        .share({
          title,
          text,
          url
        })
        .then(() => console.log("Shared!"))
        .catch(err => console.error(err));
    } else {
      window.location = `mailto:?subject=${title}&body=${text}%0A${url}`;
    }
  };

  return btn;
}

document.title = "Demo";
document.body.appendChild(createShareButton());

*: Bitte erwägen Sie, je nach Anwendungsfall einen angemesseneren Fallback (z. B. Social Sharing) zu verwenden.

1
grooveplex

Sie können die WebView.addJavascriptInterface () - Methode für Android verwenden.

Zuerst müssen Sie eine Klasse schreiben, die die Absicht zum Öffnen des Freigabemenüs auslöst ( schauen Sie hier ) und implementieren Sie diese Klasse dann mit dem Aufruf addJavascriptInterface (). Danach müssen Sie nur noch die Methode von Ihrem Javascript aus aufrufen.

0
Ezeke