summaryrefslogtreecommitdiff
path: root/src/client/app/common/scripts
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2019-01-23 05:20:28 +0900
committersyuilo <syuilotan@yahoo.co.jp>2019-01-23 05:20:28 +0900
commit78c185a05adb58da92cdb872f95eaaa2113183f7 (patch)
treee84de93ba2fb2e736040f3820d9b144cffcc6bbc /src/client/app/common/scripts
parentSupports Twemoji / CustomEmoji in poll (#3960) (diff)
downloadsharkey-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.ts30
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;
};