From e112a143669433b6a6212985491bec492a91ece0 Mon Sep 17 00:00:00 2001 From: linfso Date: Tue, 30 Jul 2024 11:44:46 +0800 Subject: [PATCH] md --- src/components/XdTable/index.vue | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/src/components/XdTable/index.vue b/src/components/XdTable/index.vue index 08dfac9f..6dfee464 100644 --- a/src/components/XdTable/index.vue +++ b/src/components/XdTable/index.vue @@ -833,10 +833,32 @@ export default { handleCopySelect(event) { this.contextVisible=false; if(this.currentSelectStr){ - navigator.clipboard.writeText(this.currentSelectStr).then(() => { - this.$message({message: '复制成功', type:'success'})//提示 - this.currentSelectStr=null; - }); + + + if (navigator.clipboard && window.isSecureContext) { + // navigator clipboard 向剪贴板写文本 + this.$message.success('复制成功') + return navigator.clipboard.writeText(this.currentSelectStr) + } else { + // 创建text area + const textArea = document.createElement('textarea') + textArea.value = this.currentSelectStr + // 使text area不在viewport,同时设置不可见 + document.body.appendChild(textArea) + textArea.focus() + textArea.select() + this.$message.success('复制成功') + return new Promise((res, rej) => { + // 执行复制命令并移除文本框 + document.execCommand('copy') ? res() : rej() + textArea.remove() + }) + } + + // navigator.clipboard.writeText(this.currentSelectStr).then(() => { + // this.$message({message: '复制成功', type:'success'})//提示 + // this.currentSelectStr=null; + // }); } }, // 选择整行