OS連携ユーザージェスチャー必須スマホ推奨判定中...
Web Share API
OS標準の共有シートを起動し、タイトル・本文・URL・ファイルを他アプリへ渡せるAPI。
1対応判定
| ブラウザ | 対応バージョン |
|---|---|
| Chrome | 128+(部分対応は89+) |
| Firefox | 未対応(Androidは対応) |
| Safari | 12.1+ |
備考: デスクトップFirefoxのみ非対応
2権限フロー
権限不要
API呼び出しだけで動く。プロンプトも操作起点の縛りもない
ユーザージェスチャー必須このAPI
ボタンクリック等のユーザー操作の中でしか呼べない。プロンプトは出ない
権限プロンプトあり
呼び出すとブラウザが許可/ブロックのプロンプトを表示し、ユーザーが選ぶ
iOS独自requestPermission
iOSではrequestPermission()を操作起点で呼び、明示的に許可を得る
権限プロンプトは無いが、ボタンクリック等のユーザージェスチャー内でしか navigator.share() を呼べない。
3ライブデモ: OS共有シートの起動とファイル共有
4コードスニペット
TypeScript(要約版)
// 共有可能かの事前判定
const data: ShareData = {
title: "Web API見本市",
text: "ブラウザ標準APIを1ページずつ体験できるカタログ",
url: "https://lab-webapi.gitgit-news.org/",
};
if (!navigator.canShare?.(data)) {
console.warn("このデータは共有できません");
}
// OS共有シートの起動(ユーザージェスチャー必須)
try {
await navigator.share(data);
} catch (err) {
// ユーザーがキャンセルすると AbortError
if ((err as DOMException).name !== "AbortError") throw err;
}
// ファイル共有: canShareでの判定が必須
const file = new File(["hello"], "hello.txt", { type: "text/plain" });
if (navigator.canShare?.({ files: [file] })) {
await navigator.share({ files: [file], title: "テキストファイル" });
}