vue项目实现复制内容到剪切板

介绍vue项目中实现复制内容到剪切板的两种实现方式:
1、execCommand(‘Copy’)方法:

(function () {
      document.oncopy = function (e) {
            e.clipboardData.setData('text', '要复制的内容');
            e.preventDefault();
            document.oncopy = null;
      }
})('要复制的内容');
document.execCommand('Copy');

2、clipboardData.setData()方法:
先判断是否支持clipboardData,再通过clipboardData的setData方法执行复制操作。

if (window.clipboardData) {
      window.clipboardData.setData('text', '要复制的内容');
}

两种方式结合使用可以增加各浏览器的兼容性:
在这里插入图片描述
(**备注:**这两种方式在window系统的PC端浏览器中可以实现,在安卓手机中测试也可行,在IOS手机无效,IOS系统电脑未测,估计也不行。)

3、第三方插件vue-clipboard2实现:
安装vue-clipboard2:

npm install vue-clipboard2

main.js文件中引入:
vue2引入:

import Vue from 'vue'
import VueClipboard from 'vue-clipboard2'
Vue.use(VueClipboard )

vue3引入:

import { createApp } from 'vue'
import VueClipboard from 'vue-clipboard2'

const app = createApp(App)
app.use(VueClipboard)

使用:

this.$copyText('要复制的内容').then(function (e) {
     console.log('【复制成功】', e)
  }, function (e) {
     console.log('【复制失败】', e)
})

**(**备注:vue-clipboard2方式在安卓手机、window系统PC端浏览器、IOS手机浏览器中使用都有效,IOS电脑及平板未测)

有个小问题:this.$copyText()方法触发时,如果是点击事件触发都是复制成功,如果是setTimeout延时自动触发的方式,设置延时时间超过4秒时会复制失败。不知道是啥原因,有兴趣的工友可以研究下源码,欢迎留言解惑!!!!!!!

如果对你有帮助,记得点个赞噢(~~)

Logo

前往低代码交流专区

更多推荐