document.execCommand('copy')
を使う。
例
雑にこんな感じ
// elementはinput要素とか
function copy(element){
// コピーさせたいテキストの選択
element.focus();
element.setSelectionRange(0, 9999);
// クリップボードにコピー
document.execCommand('copy');
// コピーさせたいテキストの選択を解除
element.blur();
}
element.focus()
のとこ、特にスマホだと一瞬ソフトウェアキーボードが出てきてダサいです。多分もっといい方法がある
MDNの該当ページにもブラウザのサポート状況が書いてあるけど、スマホの対応は雑にこんな感じ。新しいブラウザだとだいたい使えるっぽい。
- iOS10 Safari 可
- iOS9 Safari 不可
- Android 標準ブラウザ 不可
- Android Chrome 可
- PhantomJS 不可
そのブラウザがコマンドを実行可能かは document.queryCommandSupported
で判定可能。
if (document.queryCommandSupported('copy')) {
// コピーボタンを描画する処理とか
}