[JavaScript] 表示しているページのURLなど特定の文字列をコピーさせる方法
2 min read
背景
ブログの記事などの URL をコピーさせるための機能が欲しい。
方法
textarea
やinput
などのテキストを入力できる要素に入力されている値をdocument.execCommand("copy")
を使うと、クリップボードに書き込むことができる。
大まかな copy の仕方は下記の通り。
const textarea = document.querySelector("textarea");
textarea.select();
document.execCommand("copy");
実例
// クリックしたらコピーさせるボタン
const button = document.querySelector("button");
button.addEventListener("click", (e) => {
e.preventDefault();
// 入力要素を作る
const input = document.createElement("input");
// 入力要素に表示中のURLを挿入する
input.value = location.href;
// DOM上に入力要素を挿入する
document.body.appendChild(input);
// 入力した文字を選択する
input.select();
// クリップボードに書き込む
document.execCommand("copy");
// 要素を削除する
input.remove();
});
記事の URL なので、location.href
を使用しているが、input.value
に入れる値は任意のもので良い。