Aplikacje internetowe mogą korzystać z tych samych funkcji udostępniania dostarczonych przez system co aplikacje na danej platformie.
Dzięki interfejsowi Web Share API aplikacje internetowe mogą korzystać z tych samych funkcji udostępniania, które są dostępne w przypadku aplikacji na konkretne platformy. Interfejs Web Share API umożliwia aplikacjom internetowym udostępnianie linków, tekstu i plików innym aplikacjom zainstalowanym na urządzeniu w taki sam sposób jak aplikacjom zależnym od platformy.
Możliwości i ograniczenia
Udostępnianie w internecie ma te możliwości i ograniczenia:
- Można go używać tylko w witrynie, do której dostęp jest dostępny przez HTTPS.
- Jeśli udostępnianie odbywa się w elemencie iframe innej firmy, należy użyć atrybutu
allow
. - Musi być wywoływany w odpowiedzi na działanie użytkownika, np. kliknięcie. Nie można go wywołać za pomocą obsługi
onload
. - Możesz udostępniać adresy URL, tekst lub pliki.
Udostępnianie linków i tekstu
Aby udostępniać linki i tekst, użyj metody share()
, która jest metodą opartą na obietnicy z wymaganym obiektem właściwości.
Aby przeglądarka nie wysyłała żądania TypeError
, obiekt musi zawierać co najmniej jedną z tych właściwości: title
, text
, url
lub files
. Możesz na przykład udostępnić tekst bez adresu URL lub odwrotnie. Zezwolenie na wszystkie 3 opcje zwiększa elastyczność przypadków użycia. Załóżmy, że po uruchomieniu kodu poniżej użytkownik wybrał jako cel aplikację poczty e-mail. Parametr title
może stać się tematem e-maila, text
, treścią wiadomości, a plikami – załącznikami.
if (navigator.share) {
navigator.share({
title: 'web.dev',
text: 'Check out web.dev.',
url: 'https://web.dev/',
})
.then(() => console.log('Successful share'))
.catch((error) => console.log('Error sharing', error));
}
Jeśli Twoja witryna ma wiele adresów URL dla tej samej treści, udostępnij kanoniczny adres URL strony zamiast bieżącego adresu URL. Zamiast udostępniać adres document.location.href
, sprawdź, czy w pliku <head>
strony <head>
znajduje się tag <meta>
kanonicznego adresu URL, i udostępnij go. Zwiększy to wygodę użytkowników. Dzięki temu nie tylko unikamy przekierowań, ale też zapewniamy, że udostępniony adres URL zapewni użytkownikom odpowiednie wrażenia w przypadku danego klienta. Jeśli na przykład znajomy udostępni Ci adres URL na urządzenie mobilne, a Ty otworzysz go na komputerze, powinieneś zobaczyć wersję na komputer:
let url = document.location.href;
const canonicalElement = document.querySelector('link[rel=canonical]');
if (canonicalElement !== null) {
url = canonicalElement.href;
}
navigator.share({url});
Udostępnianie plików
Aby udostępnić pliki, przetestuj najpierw usługę navigator.canShare()
i ją wywołaj. Następnie umieść tablicę plików w wywołaniu funkcji navigator.share()
:
if (navigator.canShare && navigator.canShare({ files: filesArray })) {
navigator.share({
files: filesArray,
title: 'Vacation Pictures',
text: 'Photos from September 27 to October 14.',
})
.then(() => console.log('Share was successful.'))
.catch((error) => console.log('Sharing failed', error));
} else {
console.log(`Your system doesn't support sharing files.`);
}
Zwróć uwagę, że przykładowy kod obsługuje wykrywanie funkcji, testując navigator.canShare()
zamiast navigator.share()
.
Obiekt danych przekazany do funkcji canShare()
obsługuje tylko właściwość files
.
Można udostępniać określone typy plików audio, obrazów, PDF, wideo i tekstowych.
Pełną listę znajdziesz w artykule Dozwolone rozszerzenia plików w Chromium. W przyszłości możemy dodać więcej typów plików.
Udostępnianie w elementach iframe innych firm
Aby wywołać działanie udostępniania z poziomu elementu iframe firmy zewnętrznej, umieść iframe z atrybutem allow
o wartości web-share
:
<!-- On https://example.com/index.html -->
<iframe allow="web-share" src="https://third-party.example.com/iframe.html"></iframe>
Możesz to zobaczyć w działaniu w demonstracji na Glitch i wyświetlić kod źródłowy.
Jeśli nie podasz tego atrybutu, otrzymasz NotAllowedError
z komunikatem
Failed to execute 'share' on 'Navigator': Permission denied
.
Studium przypadku: Trasa Świętego Mikołaja
Santa Tracker, projekt open source, to świąteczna tradycja w Google. Każdego grudnia możesz świętować ten okres dzięki grom i zajęciam edukacyjnym.
W 2016 r. zespół odpowiedzialny za aplikację Santa Tracker używał interfejsu Web Share API na Androidzie. Ten interfejs API doskonale nadawał się do urządzeń mobilnych. W poprzednich latach zespół usunął przyciski udostępniania na urządzeniach mobilnych, ponieważ przestrzeń jest na wagę złota, a nie było uzasadnienia dla kilku celów udostępniania.
Dzięki interfejsowi Web Share API mogli jednak wyświetlić tylko 1 przycisk, oszczędzając cenne piksele. Okazało się też, że użytkownicy udostępniający treści za pomocą Web Share robili to o 20% częściej niż użytkownicy bez włączonego interfejsu API. Otwórz Trasa Świętego Mikołaja, aby zobaczyć, jak działa Udostępnianie w przeglądarce.
Obsługa przeglądarek
Obsługa interfejsu Web Share API w przeglądarkach jest zróżnicowana. Zalecamy korzystanie z wykrywania funkcji (jak w poprzednich przykładach kodu) zamiast zakładania, że dana metoda jest obsługiwana.
Oto ogólny zarys obsługi tej funkcji. Szczegółowe informacje znajdziesz, klikając jeden z linków do zespołu pomocy.
navigator.canShare()
navigator.share()
Pokaż informacje o pomocy dotyczącej interfejsu API
Czy zamierzasz korzystać z interfejsu Web Share API? Twoja publiczna pomoc pomaga zespołowi Chromium ustalać priorytety funkcji i pokazuje innym dostawcom przeglądarek, jak ważne jest ich wsparcie.
Wyślij tweeta na adres @ChromiumDev, używając hashtagu
#WebShare
,
i daj nam znać, gdzie i jak go używasz.