2023-07-27 07:31:52 +02:00
|
|
|
/*
|
2024-02-13 16:59:27 +01:00
|
|
|
* SPDX-FileCopyrightText: syuilo and misskey-project
|
2023-07-27 07:31:52 +02:00
|
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
*/
|
|
|
|
|
2017-02-25 08:30:18 +01:00
|
|
|
/**
|
|
|
|
* Clipboardに値をコピー(TODO: 文字列以外も対応)
|
|
|
|
*/
|
2017-03-18 12:05:11 +01:00
|
|
|
export default val => {
|
2019-01-22 21:20:28 +01:00
|
|
|
// 空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);
|
|
|
|
|
|
|
|
// クリップボードにコピー
|
2017-02-25 08:30:18 +01:00
|
|
|
const result = document.execCommand('copy');
|
2019-01-22 21:20:28 +01:00
|
|
|
|
|
|
|
// 要素削除
|
|
|
|
document.body.removeChild(tmp);
|
2017-02-25 08:30:18 +01:00
|
|
|
|
|
|
|
return result;
|
|
|
|
};
|