Quellcode durchsuchen

fix: 使用execCommand取代Clipboard API

Clipboard API只在https页面上被chrome允许使用,有兼容性问题,暂时使用execCommand方式绕过
Jinyao vor 5 Jahren
Ursprung
Commit
5b24c9a6eb
1 geänderte Dateien mit 18 neuen und 5 gelöschten Zeilen
  1. 18 5
      src/utils/clipboard.ts

+ 18 - 5
src/utils/clipboard.ts

@@ -3,20 +3,33 @@
  * 请注意,此处引用了外部的this,因此在Vue实例中导入并使用该方法,否则将出现错误
  */
 export function copy(content: string) {
+  const textarea = document.createElement('textarea');
+  textarea.innerHTML = content;
+  textarea.value = content;
+  document.body.appendChild(textarea);
+  textarea.select();
   try {
-    navigator.clipboard.writeText(content).then(
+    if (document.execCommand('copy')) {
       // @ts-ignore
       this.$message({
         type: 'success',
         message: '成功复制到剪贴板',
-      }),
-    );
-  } catch (e) {
+      });
+    } else {
+      // @ts-ignore
+      this.$message({
+        type: 'error',
+        message: '复制到剪贴板失败',
+      });
+    }
+  } catch (err) {
     // @ts-ignore
     this.$message({
       type: 'error',
       message: '复制到剪贴板失败',
     });
-    console.error(e);
+    console.error(err);
+  } finally {
+    document.body.removeChild(textarea);
   }
 }