JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptでテキストをクリップボードにコピーする方法【サンプルコード付きで解説】

JavaScriptでテキストをクリップボードにコピーするには?

Webアプリや管理画面などで、「コピー」ボタンをワンクリックするだけでテキストをクリップボードにコピーできれば、ユーザー体験は大きく向上します。JavaScriptを使えば、この機能はごくシンプルなコードで実装できます。

本記事では、document.execCommand("copy") を使った定番の実装方法を、実際に動作するサンプルコードとともにわかりやすく解説します。

サンプルコード

以下は、入力フィールド内のテキストをボタン一つでクリップボードにコピーする完全なHTMLの例です。

<!DOCTYPE html>
<html>
<head>
<style>
button {
    border: none;
    outline: none;
    background-color: rgb(191, 187, 255);
    color: black;
    font-weight: bold;
    padding: 10px;
}
input {
    padding: 10px;
}
</style>
</head>
<body>
<h1>Clipboard example</h1>
<h2>Click the button below to copy text and paste it somewhere</h2>
<input type="text" value="Hello World" class="textInput" />
<button class="copy">Copy text</button>
<script>
document.querySelector(".copy").addEventListener("click", copyText);
function copyText() {
    var copyText = document.querySelector(".textInput");
    copyText.select();
    copyText.setSelectionRange(0, 99999);
    document.execCommand("copy");
    alert("The copied text is: " + copyText.value);
}
</script>
</body>
</html>

コードのポイント解説

コピー処理の中核となるのは、copyText() 関数内の以下の流れです。

  • テキストの選択: select() メソッドで入力フィールド内の文字列を全選択し、さらに setSelectionRange(0, 99999) で選択範囲を明示的に指定します。これにより、スマートフォンなどの環境でも確実にすべてのテキストが対象になります。
  • コピーの実行: document.execCommand("copy") を呼び出すことで、選択中のテキストがクリップボードにコピーされます。
  • ユーザーへの通知: コピー完了後、alert() でコピーされた内容を表示し、処理が成功したことをユーザーに伝えます。
  • また、addEventListener("click", copyText) の部分で、ボタンがクリックされたタイミングでこの関数が実行されるようにイベントを紐付けています。

出力結果

上記のコードをブラウザで開くと、次のような画面が表示されます。

JavaScriptでテキストをクリップボードにコピーする方法【サンプルコード付きで解説】

続いて、「Copy text」ボタンをクリックすると、以下のようにアラートが表示され、入力フィールド内のテキストがクリップボードにコピーされます。あとは任意の場所で貼り付け操作(Ctrl+V など)を行えば、コピーされたテキストを確認できます。

JavaScriptでテキストをクリップボードにコピーする方法【サンプルコード付きで解説】

補足:最新のClipboard APIについて

document.execCommand("copy") は現在非推奨(Deprecated)の扱いになっています。今後の開発では、より安全でPromiseベースの Clipboard API を使用することが推奨されています。

navigator.clipboard.writeText("Hello World")
  .then(() => {
    alert("テキストをコピーしました!");
  })
  .catch((err) => {
    console.error("コピーに失敗しました:", err);
  });

Clipboard APIはHTTPS環境でのみ動作する点に注意してください。レガシーブラウザへの対応が必要な場合は、execCommand をフォールバックとして併用するのが一般的です。

  1. JavaScriptでHTMLキャンバスに描画する方法をわかりやすく解説

    HTMLキャンバス(canvas)への描画は、JavaScriptを使って行います。キャンバスに描画する前に、HTML DOMメソッドのgetElementById()とgetContext()を使用する必要があります。ここでは、JavaScriptでキャンバスに図形を描画する基本的な手順を紹介します。キャンバスに描画する基本手順getElementById()メソッドを使って、HTML内のキャンバス要素を取得します。getContext()メソッドを呼び出して、描画用のオブジェクトを取得します。このオブジェクトが、図形を描くための各種メソッドやプロパティを提供します。取得した描画オブジェクト

  2. JavaScriptでテキストを切り替える(トグルする)方法を解説

    JavaScriptを使えば、ボタンをクリックするたびに表示されるテキストを切り替える(トグルする)処理を簡単に実装できます。ここでは、innerHTMLプロパティと条件分岐を組み合わせた、最も基本的なテキスト切り替えの方法をサンプルコード付きで解説します。実装コード例<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1" /> <style>