クリップボードへのコピー
navigator.clipboard.writeText readText
Clipboard APIを使ってテキストをクリップボードへコピーします。モダンで安全な方法です。
デモ:コピー機能
よくある「コピーボタン」パターン:
コマンド
npm install @anthropic-ai/sdkURL
https://example.com/api/v1/usersコード
const greet = (name) => `Hello, ${name}!`;コード例
js
// ✅ モダンなClipboard API(推奨)
async function copyToClipboard(text) {
try {
await navigator.clipboard.writeText(text);
showToast('コピーしました!');
} catch (err) {
console.error('コピー失敗:', err);
// フォールバック(旧ブラウザ対応)
fallbackCopy(text);
}
}
// クリップボードの読み取り(許可が必要)
async function readFromClipboard() {
try {
const text = await navigator.clipboard.readText();
return text;
} catch (err) {
console.error('読み取り失敗:', err);
}
}
// 画像のコピー(ClipboardItem)
async function copyImage(imageBlob) {
await navigator.clipboard.write([
new ClipboardItem({ 'image/png': imageBlob })
]);
}
// 旧ブラウザのフォールバック
function fallbackCopy(text) {
const textarea = document.createElement('textarea');
textarea.value = text;
textarea.style.position = 'fixed';
textarea.style.opacity = '0';
document.body.appendChild(textarea);
textarea.select();
document.execCommand('copy'); // ⚠️ 非推奨
document.body.removeChild(textarea);
}
// セキュリティ注意:readText は HTTPS + ユーザー操作 + 許可が必要比較:Clipboard API vs execCommand
| 観点 | Clipboard API(推奨) | execCommand('copy')(非推奨) |
|---|---|---|
| 非同期 | ✅ Promise | ❌ 同期 |
| 画像・リッチテキスト | ✅ ClipboardItemで対応 | ❌ テキストのみ |
| HTTPS必須 | ✅(セキュア) | ❌ HTTP可(危険) |
| 廃止予定 | — | ⚠️ 非推奨(仕様から削除予定) |
🤖 AIプロンプトテンプレート
以下の要件を満たすTypeScript + Reactコンポーネントを作成してください。 - navigator.clipboard.writeText/readTextを使ったクリップボード操作のサンプルを示す - テキストをクリップボードにコピーするボタンUIのサンプルを含める - クリップボードからテキストを読み取る(ペースト)機能の例を含める - clipboard-writeとclipboard-read権限の確認・リクエスト処理を示す - コピー成功・失敗のフィードバックUIのサンプルを含める - コメントは日本語で記述する
⚠️ このプロンプトはあくまでたたき台です。AIの回答はモデルやバージョン、会話の文脈によって毎回異なります。意図通りに動かない場合は、条件を追記・修正してお使いください。