【JavaScript】クリップボードにコピー
問題
「クリックしたら、クリップボードにコピーする」を作りたいです。

答え
例です。
input要素はわりと簡単。
<input type="text" id="copy-target" value="コピー対象コピー対象コピー対象" readonly>
<input type="button" onclick="clipboard_ni_copy()" value="コピー📎">
<script>
function clipboard_ni_copy()
{
var copyText = document.querySelector('#copy-target');
copyText.select();
if(document.execCommand('copy')) {
alert('クリップボードにコピーしました.');
} else {
alert('Ctrl+Cを押してください.');
}
}
</script>
span要素やp要素のテキストをコピーするのも可能。
コピー対象2コピー対象2コピー対象2
<span style="background:#ff6;" id="copy-target2">コピー対象2コピー対象2コピー対象2</span>
<input type="button" onclick="clipboard_ni_copy2()" value="← クリックしたらクリップボードにコピーします">
<script>
function clipboard_ni_copy2()
{
var copyText = document.querySelector('#copy-target2');
var range = document.createRange();
range.selectNodeContents(copyText);
var selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
if(document.execCommand('copy')) {
alert('クリップボードにコピーしました.');
} else {
alert('Ctrl+Cを押してください.');
}
}
</script>
ポイントは以下の2つ
・選択した要素をコピーする document.execCommand('copy')
・要素に応じて選択方法を変える
メモ
なお、onloadでクリップボードに何かぶち込むといった使い方は、セキュリティ上問題があるためか、させてもらえないようです。
クリップボードに何か入れるには、ユーザーの何らかのアクションが必要なようです。