vue如何实现点击复制粘贴功能?
第一种方法
html
<el-form-item label="App ID">
<span ref="copy" prop="appId">{{ tableList.appId }}</span>
<span class="showtimeone" @click="CopyUrl()">复制</span>
</el-form-item>
js
CopyUrl(){
window.getSelection().removeAllRanges()
const copyDOM = this.$refs.copy
const range = document.createRange()
range.selectNode(copyDOM)
window.getSelection().addRange(range)
try {
let successful = document.execCommand("copy");
this.utilHelper.commonFn.toast(
`${successful ? "复制成功" : "您的手机不支持自动复制,请手动复制~"}`
);
} catch (err) {
console.log('无法复制')
}
window.getSelection().removeAllRanges()
}
第二种方法
利用插件: vue下想要实现复制功能有很多种方法,比如vue-clipboard2等。
利用原生方法:
但是如果你不想使用插件,我们也可以利用document.execCommand来实现此功能。
简介: 当一个HTML文档切换到设计模式 designMode时,文档对象暴露 execCommand 方法,该方法允许运行命令来操纵可编辑区域的内容。
使用:
methods: {
CopyUrl(){
let url = document.querySelector('#copyObj');
url.select(); // 选择对象
document.execCommand("Copy");
},
}
方法如上,我们需要复制的目标,比如以下的input标签
<input type="text" value="https://blog.csdn.net/Tomhs3000" id="copyObj">
此处input的value也可以直接用v-model绑定数据
注意事项
需要注意的是:
1、input 不可以添加 disabled 属性;
2、input的 width 和 height 不能为0;
3、input框不能有hidden属性;
但是可以设置opacity。