クリップボードへのコピー・ペーストをプログラムで操作する
// ── クリップボードにテキストをコピー ──────────────────
// ⚠️ HTTPS(またはlocalhost)でないと動作しない
// ── 現代的な方法: Clipboard API(非同期)────────────────
async function copyToClipboard(text: string) {
try {
await navigator.clipboard.writeText(text);
console.log('コピーしました!');
} catch (error) {
console.error('コピーに失敗:', error);
// フォールバック: 古いブラウザ用
fallbackCopy(text);
}
}
// クリップボードからテキストを読み取る
async function pasteFromClipboard() {
const text = await navigator.clipboard.readText();
console.log('クリップボードの内容:', text);
}
// ── React での使い方 ─────────────────────────────────
function CopyButton({ text }: { text: string }) {
const [copied, setCopied] = useState(false);
const handleCopy = async () => {
await navigator.clipboard.writeText(text);
setCopied(true); // ボタンを「コピー済み」に変える
setTimeout(() => setCopied(false), 2000); // 2秒後に戻す
};
return (
<button onClick={handleCopy}>
{copied ? '✓ コピー済み' : 'コピー'}
</button>
);
}HTTPSまたはlocalhost環境でのみ動作する。readTextはユーザーの許可が必要。フォールバックとしてdocument.execCommand("copy")(非推奨)がある。