6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

JavaScriptでクリップボードにコピーする方法(ライブラリ不要)

Last updated at Posted at 2022-12-19

現在Vue.jsで開発をしていて、以前ならvue-clipboard2というライブラリを導入していたのですが、現在はブラウザAPIに navigator.clipboardというのがあり、ほぼ全てのブラウザに対応していることを確認したのでこちらのAPIを利用して開発することにしました。

ですので、バニラJSのみ・数行のコードで完結します。特別なライブラリなどは不要です。

この記事ではその方法を紹介します。

ブラウザの Clipboard API を利用する

ブラウザからクリップボードにアクセスできるのが Clipboad API です。

Clipboard API は、切り取り、コピー、貼り付け機能をWebアプリケーションに実装するために使用できます。

CLipboard API に関するMDN Web Docs
https://developer.mozilla.org/ja/docs/Web/API/Navigator/clipboard

コピーするメソッド

下記のコードで任意の文字列をコピーできます。

navigator.clipboard.writeText("任意の文字列");

コピーする HTML & JS コード

事例として、ボタン(button)をクリックすることでコピーできるコードを紹介します。

<div id="txt">コピーしたいテキストはこれ</div>
<button id="btn">コピーする</button>
// HTML要素取得
const txt = document.getElementById('txt');
const btn = document.getElementById('btn');

// コピー処理(btnがクリックされたらtxtをコピーする)
btn.addEventListener('click', () => {
  if (!navigator.clipboard) {
    alert("残念。このブラウザは対応していません...");
    return;
  }

  navigator.clipboard.writeText(txt.textContent).then(
    () => {
      alert('コピー成功👍');
    },
    () => {
      alert('コピー失敗😭');
    });
});

おわりに

一部ではiOS対応してないーという声もネットにはあったのですが、私のiPhone / iPadでは問題なく動作しました。

とはいえ、万が一動作しない場合や非対応ブラウザのためにif文で処理を書きました。

参考

6
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?