Clipboard API でテキストをクリップボードへコピーする方法【JavaScript】

JavaScript

やりたいこと

「Ctrl + C」や「command + C」でできるコピーを、簡単にできる機能をWEBサイトに実装したい。

clipboard.js」などの便利なライブラリは使わず、素のJavaScript(+HTML)のみで実装したい。

Clipboard API

Clipboard APIは、クリップボードへのコピーや切り取り、貼り付けなどの操作を行うためのAPIで、グローバル変数の navigator を介してクリップボードの操作を行います。

以前までクリップボードの操作に利用されていた、document.execCommand()メソッドに置き換わるように設計されています。

Clipboard インターフェース

Clipboard API の Clipboard インターフェースでは、クリップボードへのコピーや貼り付けなどの操作を行うことができるメソッドを提供しています。

メソッド名操作
read()クリップボードからデータ(画像など)を取得する。
readText()クリップボードからテキストを取得する。
write()クリップボードにデータ(画像など)を書き込む。
writeText()クリップボードにテキストを書き込む。

これらのメソッドは、Promiseで実装されています。

ClipboardEvent

ClipboardEvent は、イベントリスナーで扱うことができるイベントです。

clickやsubmitなどと同じように、addEventListenerを使うことで特定のイベントが発生したときに指定した処理を実行することができるようになります。

イベント処理実行タイミング
cut「切り取り」を実行したときに発生する。
copy「コピー」を実行したときに発生する。
paste「貼り付け」を実行したときに発生する。

Clipboard API のブラウザ対応状況

本記事執筆時点(2022年9月)での、Clipboard API のブラウザ対応状況は以下になります。

>クリップボード API – Web API | MDN

Clipboard API でテキストをクリップボードへコピーする

Clipboard API でテキストをクリップボードへコピーするには、Clipboard インターフェースのwriteText()メソッドを使います。

const text = document.querySelector('#textarea');

navigator.clipboard.writeText(text)
  .then(() => {
    console.log("クリップボードにコピーできました!");
  })
  .catch((error) => {
    console.log("クリップボードへのコピーに失敗しました!");
  });

Promiseで実装されているため、then()メソッドで行いたい処理を記述し、catch()メソッドでエラー処理を記述します。

まとめ

JavaScriptの Clipboard API を使うことで、ライブラリを使わずに素のJavaScriptのみでテキストをクリップボードへコピーすることができるようになります。

Clipboard API はPromiseで実装されているため、then()メソッドやcatch()メソッドを使って処理を記述しましょう。

document.execCommand()メソッドは、現在非推奨であるため、使用は避けましょう。

コメント

タイトルとURLをコピーしました