ウェブアプリは、プラットフォーム固有のアプリと同じ、システムが提供する共有機能を使用できます。
Web Share API を使用すると、ウェブアプリはシステムが提供するのと同じ共有機能を プラットフォーム固有のアプリとして機能しています。Web Share API を使用すると、ウェブアプリで 同じデバイスでデバイスにインストールされている他のアプリとリンク、テキスト、ファイルを共有できます。 プラットフォーム固有のアプリと見なされます。
で確認できます。 <ph type="x-smartling-placeholder">機能と制限
ウェブ共有には次の機能と制限事項があります。
- HTTPS 経由でアクセスされるサイトでのみ使用できます。
- サードパーティの iframe での共有が行われる場合は、
allow
属性を使用する必要があります。 - クリックなどのユーザー操作に応じて呼び出す必要があります。呼び出し元
onload
ハンドラを通じてアクセスすることはできません。 - URL、テキスト、ファイルを共有できる。
対応ブラウザ
- <ph type="x-smartling-placeholder">
- <ph type="x-smartling-placeholder">
- <ph type="x-smartling-placeholder">
リンクとテキストの共有
リンクとテキストを共有するには、Promise ベースの share()
メソッドを使用します。
メソッドを呼び出します。
ブラウザが TypeError
をスローしないようにするには、
オブジェクトには少なくとも 1 つの
(title
、text
、url
、files
のいずれか)を指定します。マイページ
では、URL なしでテキストを共有したり、その逆も可能です。3 つすべてを許可
ユースケースの柔軟性が広がります。コードを実行した後
下の例では、ターゲットとしてメール アプリケーションが選択されています。title
パラメータ
メールの件名、text
、メッセージ本文、ファイル、
できます。
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));
}
サイトで同じコンテンツの URL が複数ある場合は、そのページの URL を
正規 URL を使用することをおすすめします。共有する代わりに
document.location.href
への URL の正規 URL <meta>
タグを確認します。
ページの <head>
を作成して共有します。これにより、
できます。これにより、リダイレクトが回避されるだけでなく、共有された URL が確実に
適切なユーザー エクスペリエンスを提供する必要があります。たとえば、友人が
あるユーザーがモバイル URL を共有していて、それをパソコンで見ているとします。
PC 版が表示されます。
let url = document.location.href;
const canonicalElement = document.querySelector('link[rel=canonical]');
if (canonicalElement !== null) {
url = canonicalElement.href;
}
navigator.share({url});
ファイルの共有
ファイルを共有するには、まず navigator.canShare()
をテストして呼び出します。次に、
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.`);
}
このサンプルでは、次のものをテストして、特徴検出を処理しています。
navigator.share()
ではなく navigator.canShare()
。
canShare()
に渡されるデータ オブジェクトは、files
プロパティのみをサポートします。
特定の種類の音声、画像、PDF、動画、テキスト ファイルを共有できます。
Chromium で使用できるファイル拡張子をご覧ください。
をご覧ください。今後、他のファイル形式が追加される可能性があります。
サードパーティの iframe で共有する
サードパーティの iframe 内から共有アクションをトリガーするには、
allow
属性の値を web-share
に指定して iframe を埋め込みます。
<!-- On https://example.com/index.html -->
<iframe allow="web-share" src="https://third-party.example.com/iframe.html"></iframe>
実際の動作は、Glitch のデモで確認できます。
ソースコードを表示します。
属性を指定しないと、NotAllowedError
と次のメッセージが表示されます。
Failed to execute 'share' on 'Navigator': Permission denied
。
「サンタを追いかけよう」の事例紹介
<ph type="x-smartling-placeholder">オープンソース プロジェクトのサンタを追いかけようは、 おわかりいただけたでしょうか毎年 12 月には、季節を祝うことができます ゲームや学習体験を提供します。
2016 年、サンタを追いかけようチームは、Android で Web Share API を使用しました。 この API はモバイルに最適でした。 ここ数年、モバイル デバイス用の共有ボタンを取り除きました。 複数の共有ターゲットを持つことを正当化できませんでした
これに対して Web Share API を使用すれば 貴重なピクセルを節約できます また、ユーザーがウェブ共有を利用した場合、通常のショッピングよりも約 20% 多く、 ユーザーの追加や削除ができます。次に進む: サンタを追いかけよう] をタップすると、ウェブ共有の実例を確認できます。
ブラウザ サポート
Web Share API のブラウザ サポートは微妙に異なるため、次の機能を使用することをおすすめします。 (上記のコードサンプルで説明したとおり)に使用し、特定のメソッドの呼び出しを サポートされません。
この機能のサポートの概要は次のとおりです。詳しくは、各サポートリンクをご覧ください。
navigator.canShare()
-
対応ブラウザ
- <ph type="x-smartling-placeholder">
- <ph type="x-smartling-placeholder">
- <ph type="x-smartling-placeholder">
navigator.share()
-
対応ブラウザ
- <ph type="x-smartling-placeholder">
- <ph type="x-smartling-placeholder">
- <ph type="x-smartling-placeholder">
API のサポートを表示する
Web Share API を使用する予定はありますか?皆様の公開サポートが Chromium チームの力になります 他のブラウザ ベンダーがそれらの機能をサポートすることの重要性を説明します。
ハッシュタグを使用して @ChromiumDev にツイートしてください
#WebShare
どこで、どのように使用されているかをお知らせください。