/** * Clipboardに値をコピー(TODO: 文字列以外も対応) */ export default (val) => { // 空div 生成 const tmp = document.createElement("div"); // 選択用のタグ生成 const pre = document.createElement("pre"); // 親要素のCSSで user-select: none だとコピーできないので書き換える pre.style.webkitUserSelect = "auto"; pre.style.userSelect = "auto"; tmp.appendChild(pre).textContent = val; // 要素を画面外へ const s = tmp.style; s.position = "fixed"; s.right = "200%"; // body に追加 document.body.appendChild(tmp); // 要素を選択 document.getSelection().selectAllChildren(tmp); // クリップボードにコピー const result = document.execCommand("copy"); // 要素削除 document.body.removeChild(tmp); return result; };