效果
如图,点击右边的【复制】按钮,就可以将左边的体验码复制到粘贴板,我这里是用的vue,其实原理都一样
实现
1.实现思路
首先要引入clipboard.js文件,该文件中具有要实现复制的功能。
然后在button里加入data-clipboard-target属性绑定一个文本框用来获取要复制的内容
2.实现代码
html
<!--一个文本框用来获取要复制的内容-->
<el-input id="foo" icon="el-icon-edit" size="mini" value="当前体验码" />
<!--通过data-clipboard-target="#foo"来绑定按钮与文本框,当点击按钮时触发copy()函数-->
<el-button class="btn" type="success" plain icon="el-icon-edit" data-clipboard-target="#foo" @click="copy(scope.row.code)">复制体验码</el-button>
最重要的是data-clipboard-target进行绑定和点击按钮触发copy()函数
javascript
import ClipboardJS from 'clipboard' //引入clipboard.js文件用于复制
copy(code){
var name = document.getElementById("foo"); //通过id获取到文本框
name.value = code; //将要复制的内容赋值给文本框
var clipboard = new ClipboardJS('.btn'); //绑定button
clipboard.on('success', e => {
this.$message.success('体验码已复制到剪切板,可粘贴');
clipboard.destroy()
});
clipboard.on('error', e => {
this.$message.error('当前浏览器不支持此功能');
clipboard.destroy()
});
}
相关问题解决
这里就是有一个问题,绑定了input的文本框一直显示在页面上,而且每次复制可以肉眼可见的里边的值在改变,如果想要隐藏input请参考我的这篇文章!!里边有很重要的避坑问题
https://blog.csdn.net/changyana/article/details/120294135