JavaScriptの .execCommand('copy') を使って、クリップボードの操作をします。
現在このメソッドは、非推奨となっている為、今後利用できなくなる可能性があり、その場合には Clipboard API が推奨されているので、あわせてそちらもチェックするようにしましょう。
.execCommand(‘copy’)
JavaScriptの document.execCommand('copy'); は、任意のテキストをクリップボードにコピーするメソッドです。
document.execCommand('copy');
ちなみに、カットする場合は .execCommand('cut') と記述します。
クリップボードのサンプル
早速サンプルです。
テキストエリアに表示された「テキスト」が、「テキストをコピー」のボタンクリックでクリップボードにコピーされ、完了すると「コピーしました。」のメッセージがウインドウにアラート表示されます。
テキストエリアの文字列はブラウザで変更可能です。
実装の手順と方法
各コードの解説の前に、実装の手順と方法について簡単にご説明します。
はじめに、設置したい場所にHTMLのコードを記述します。
<input type="text" value="テキスト" id="copyTxt">
<button id="copyBtn"><i class="fas fa-copy"></i> テキストをコピー</button>
次に、JavaScriptのコードをページに記述します。
コードは <body>〜</body> で、</body> の閉じタグ(クロージングタグ)の前に記述しましょう。
document.getElementById('copyBtn').addEventListener('click', () => {
document.getElementById('copyTxt').select(); // テキストエリアを選択
const elementTxt = document.getElementById('copyTxt'); /// テキストエリアを取得
document.execCommand('copy'); //クリップボードへコピー
alert('「' + elementTxt.value + '」をコピーしました。'); // コピー完了時にアラートで表示
});
ざっくりとしたコードの解説
コードはHTML・JavaScriptの2種で、見た目を整える部分はないのでCSSは割愛しています。順に解説していきます。
HTML
HTMLは、テキストエリアの input タグと、テキストのコピーを行う button タグの2種類です。
<input type="text" value="テキスト" id="copyTxt">
<button id="copyBtn"><i class="fas fa-copy"></i> テキストをコピー</button>
input タグの value="" には、コピーされるテキストのデフォルトの値を入力するようにしましょう。
JavaScript
JavaScriptは、HTMLで設置したボタンクリックをトリガーにする .addEventListener を使い、まずはじめに.select() メソッドで要素内のテキストを選択します。
テキストを選択したら、テキストエリアを取得して document.execCommand('copy'); で文字列のコピー。そして、alert(); でウィンドウ内にアラートを表示させます。
document.getElementById('copyBtn').addEventListener('click', () => {
document.getElementById('copyTxt').select(); // テキストエリアを選択
const elementTxt = document.getElementById('copyTxt'); /// テキストエリアを取得
document.execCommand('copy'); //クリップボードへコピー
alert('「' + elementTxt.value + '」をコピーしました。'); // コピー完了時にアラートで表示
});
余談ですが、.addEventListener でコードを書いておくとメンテナンスも簡単です。
さいごに
この記事のテキストエリアは、文字の変更等いじれるようにしていますが、テキストの修正ができないようにするにはCSSで pointer-events: none; を書いてあげれば、変更不可に設定できます。

