OSのシェア機能を呼び出したい
navigator.share navigator.canShare ShareData
このページでは、Web Share APIを使ったテキスト・URL・ファイルのOSネイティブシェアダイアログ呼び出しと、navigator.canShareによる対応チェックのインタラクティブなデモを確認できます。
デモ1:テキスト・URLのシェア
タイトル・テキスト・URLを入力して navigator.share() でOSのシェアダイアログを呼び出します。 モバイルで最も効果的です。
navigator.canShare() での事前チェック: 確認中...
デモ2:ファイルのシェア
画像ファイルを選択して navigator.canShare({ files }) で事前チェックを行い、 対応環境ではOSのシェアダイアログにファイルを渡します。
navigator.canShare({ files }) でファイルシェアの対応を事前チェックします
デモ3:現在のページをシェア
document.title と location.href を使って現在のページをシェアする、 よくある「このページをシェア」ボタンのパターンです。
タイトル:(取得中...)
URL:(取得中...)
document.title と location.href を使って現在のページ情報を自動セットします
コード例
js
// ✅ 基本の使い方(テキスト・URL)
async function shareContent() {
const shareData = {
title: 'UI Memo',
text: 'UIコンポーネントの実装リファレンス',
url: 'https://www.ui-memo.com',
};
try {
await navigator.share(shareData);
console.log('シェア成功');
} catch (err) {
if (err.name === 'AbortError') {
console.log('ユーザーがキャンセルした');
} else {
console.error('シェア失敗:', err);
}
}
}
// ✅ 対応チェック(呼び出し前に必ず確認)
if (navigator.share) {
// Web Share API 対応
shareButton.disabled = false;
} else {
// 未対応(PCブラウザの多くが非対応)
shareButton.disabled = true;
}
// ✅ ファイルのシェア
async function shareFile(file) {
const shareData = { files: [file] };
// ファイルシェアの対応チェック
if (!navigator.canShare(shareData)) {
console.log('ファイルシェア未対応');
return;
}
try {
await navigator.share(shareData);
} catch (err) {
console.error('シェア失敗:', err);
}
}
// ✅ 現在のページをシェア(よくあるパターン)
async function shareCurrentPage() {
await navigator.share({
title: document.title,
url: location.href,
});
}
// ⚠️ navigator.share() はユーザー操作(クリックなど)から
// 呼び出す必要がある。非同期で自動実行すると失敗する。比較:Web Share API vs クリップボードコピー
| 観点 | Web Share API | クリップボードコピー |
|---|---|---|
| シェア先 | OSの全アプリ(SNS・メール・メモ等) | クリップボードのみ |
| ファイル送信 | ✅ 画像・PDF等に対応 | ❌ テキストのみ |
| ユーザー操作 | シェア先をユーザーが選ぶ | コピー後にユーザーが貼り付ける |
| ブラウザ対応 | ⚠️ モバイル中心(Chrome / Safari) | ✅ ほぼ全ブラウザ |
| HTTPS必須 | ✅ | ✅ |
🤖 AIプロンプトテンプレート
以下の要件を満たすTypeScript + Reactコンポーネントを作成してください。 - navigator.share() を使ってテキスト・URL・ファイルをOSのシェアダイアログに渡す - navigator.canShare() で事前に対応チェックをし、未対応環境ではフォールバックUIを表示する - AbortError(ユーザーキャンセル)とその他のエラーを分けてハンドリングする - document.title と location.href を使って現在のページをシェアするパターンを含める - navigator.share() はユーザー操作イベントからのみ呼び出す必要がある点をコメントで明示する - コメントは日本語で記述する
⚠️ このプロンプトはあくまでたたき台です。AIの回答はモデルやバージョン、会話の文脈によって毎回異なります。意図通りに動かない場合は、条件を追記・修正してお使いください。