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秒时会复制失败。不知道是啥原因,有兴趣的工友可以研究下源码,欢迎留言解惑!!!!!!!
如果对你有帮助,记得点个赞噢(~~)