Bläddra i källkod

【功能修复】文件列表: 复制链接功能在部分浏览器环境下报错的问题
在 navigator.clipboard 为 undefined,导致无法读取 writeText 方法,浏览器抛出异常:
Uncaught TypeError: Cannot read properties of undefined (reading 'writeText')

Signed-off-by: 光帆 <1048766504@qq.com>

光帆 1 månad sedan
förälder
incheckning
8f5f2e96b3
1 ändrade filer med 23 tillägg och 3 borttagningar
  1. 23 3
      src/views/infra/file/index.vue

+ 23 - 3
src/views/infra/file/index.vue

@@ -187,9 +187,29 @@ const openForm = () => {
 
 /** 复制到剪贴板方法 */
 const copyToClipboard = (text: string) => {
-  navigator.clipboard.writeText(text).then(() => {
-    message.success('复制成功')
-  })
+  if (navigator.clipboard && window.isSecureContext) {
+    navigator.clipboard
+      .writeText(text)
+      .then(() => {
+        message.success('复制成功')
+      })
+      .catch(() => {
+        message.error('复制失败')
+      })
+  } else {
+    // 兼容不支持 clipboard 的情况
+    try {
+      const textarea = document.createElement('textarea')
+      textarea.value = text
+      document.body.appendChild(textarea)
+      textarea.select()
+      document.execCommand('copy')
+      document.body.removeChild(textarea)
+      message.success('复制成功')
+    } catch (error) {
+      message.error('复制失败')
+    }
+  }
 }
 
 /** 删除按钮操作 */