diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2019-01-23 05:20:28 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2019-01-23 05:20:28 +0900 |
| commit | 78c185a05adb58da92cdb872f95eaaa2113183f7 (patch) | |
| tree | e84de93ba2fb2e736040f3820d9b144cffcc6bbc /src/client/app/common/scripts | |
| parent | Supports Twemoji / CustomEmoji in poll (#3960) (diff) | |
| download | sharkey-78c185a05adb58da92cdb872f95eaaa2113183f7.tar.gz sharkey-78c185a05adb58da92cdb872f95eaaa2113183f7.tar.bz2 sharkey-78c185a05adb58da92cdb872f95eaaa2113183f7.zip | |
[Client] Improve usability
Diffstat (limited to 'src/client/app/common/scripts')
| -rw-r--r-- | src/client/app/common/scripts/copy-to-clipboard.ts | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/src/client/app/common/scripts/copy-to-clipboard.ts b/src/client/app/common/scripts/copy-to-clipboard.ts index 3d2741f8d7..ab13cab970 100644 --- a/src/client/app/common/scripts/copy-to-clipboard.ts +++ b/src/client/app/common/scripts/copy-to-clipboard.ts @@ -2,12 +2,32 @@ * Clipboardに値をコピー(TODO: 文字列以外も対応) */ export default val => { - const form = document.createElement('textarea'); - form.textContent = val; - document.body.appendChild(form); - form.select(); + // 空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(form); + + // 要素削除 + document.body.removeChild(tmp); return result; }; |