Browse Source

feat(无障碍复制): 修复ios不支持。

zengzhixiang 2 years ago
parent
commit
450a64e0c7
2 changed files with 41 additions and 1 deletions
  1. 36 0
      pages/test/clipboard.vue
  2. 5 1
      static/screenIos/WXdraw.js

+ 36 - 0
pages/test/clipboard.vue

@@ -8,10 +8,17 @@
     <div v-else class="">
       <span>当前环境不支持 window.navigator.clipboard</span>
     </div>
+    <div class="">
+      <div class="">copy-to-clipboard</div>
+      <v-btn @click="syncCopy()">同步写入剪贴板</v-btn>
+      <v-btn @click="asyncCopy()">异步写入剪贴板</v-btn>
+    </div>
   </div>
 </template>
 
 <script>
+import copy from 'copy-to-clipboard';
+
 export default {
   auth: false,
   data() {
@@ -40,6 +47,35 @@ export default {
         this.$toast.error(`读取失败 ${error.message}`);
       }
     },
+    syncCopy() {
+      try {
+        const now = Date.now();
+        const res = copy(now, {
+          debug: true,
+          message: 'Press #{key} to copy',
+        });
+
+        if (!res) throw new Error('写入失败');
+        this.$toast.success(`写入成功 ${now}`);
+      } catch (error) {
+        this.$toast.error(`写入失败 ${error.message}`);
+      }
+    },
+    async asyncCopy() {
+      try {
+        await new Promise((resolve) => setTimeout(resolve, 1000));
+        const now = Date.now();
+        const res = copy(now, {
+          debug: true,
+          message: 'Press #{key} to copy',
+        });
+
+        if (!res) throw new Error('写入失败');
+        this.$toast.success(`写入成功 ${now}`);
+      } catch (error) {
+        this.$toast.error(`写入失败 ${error.message}`);
+      }
+    },
   },
 };
 </script>

+ 5 - 1
static/screenIos/WXdraw.js

@@ -330,7 +330,11 @@ function doConnectDirectives() {
 
     if (result.type === 'reProduceText') {
       // 接收到云机剪贴板复制事件
-      window.copyToClipboard(result.data.text);
+      // window.copyToClipboard(result.data.text);
+
+      if (navigator.clipboard) {
+        navigator.clipboard.writeText(result.data.text);
+      }
     }
   };
 }