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