技術

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

投稿日:

こんにちは。たなかです。

ブラウザに表示されている、自動採番されたIDをクリップボードにコピーさせたい、というシチュエーションに遭遇しました。

WebアプリであればJavaScriptで簡単に実装できるとのことで、やり方を備忘録的に書いておこうと思います。

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

百聞は一見に如かずということでサクッとコード載せちゃいます。どーーん。

// 引き継ぎIDのコピー
function copyToClipboard() {
  // コピー対象をJavaScript上で変数として定義する
  var copyTarget = document.getElementById("copyTarget");
  // コピー対象のテキストを選択する
  copyTarget.select();
  // 選択しているテキストをクリップボードにコピーする
  document.execCommand("copy");
}

キーボードでいうと
copyTarget.select(); でテキストを選択した状態になり、
document.execCommand("Copy"); でctrl + cを押したみたいな動きになります。

ライブラリとか使わず素JSで簡単に書けるんですね。

ちなみに execCommand("paste"); でテキストのペーストもできるらしいですが、セキュリティの問題で動作しないブラウザが多いみたいです。

また今回は「WebViewでモバイル端末のクリップボードにテキストをコピーさせたい」という目論見だったのですが、そのような場合にはJSではなくネイティブ側での対応が必要になるとのことでした。
iOSのWeb(Safar、Chrome、WebView)では execCommand("copy"); が動かないとのことです。

短いですが今回はここまで。

-技術
-

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

no image

CSSで片方を固定、片方を可変のレイアウトを実装

こんばんは IE8・9ではdisplay: flex;が使えないがために片方を固 …

[AWS Cli] brew install awscli が失敗!

どうも中田です awsコマンドがないよーって言われたので、再度インストールするこ …

[Angular] has no exported member ‘XXXLoginComponent’.

どうも中田です Angularでコンポーネント名を階層構造にあった名前にしようと …

no image

document.querySelectorで色々なDOMを取得する

こんにちは javascriptでDOMを取得することは結構あるかと思います。 …

no image

[Angular]リアクティブフォームでバリデーション名を動的に出し分ける。

Angularのリアクティブフォームのカスタムバリデーションで、動的にエラー名を …