js点击按钮复制值到剪贴板中

js调用剪贴板

  • 效果如下:
    在这里插入图片描述
  • 打开系统剪贴板,可以看到刚刚复制的内容
    在这里插入图片描述
  • 代码如下:
<button @click='linkUrl(item)'>点击复制</button>

linkUrl(item){
	let url = item.url;//拿到想要复制的值
	let copyInput = document.createElement('input');//创建input元素
	document.body.appendChild(copyInput);//向页面底部追加输入框
	copyInput.setAttribute('value', url);//添加属性,将url赋值给input元素的value属性
	copyInput.select();//选择元素
	document.execCommand("Copy");//执行复制命令
	this.$message.success("链接已复制!")
}

刚开始是这样写的,会存在一个问题,每点击一次按钮页面底部就会出现很多输入框
在这里插入图片描述

解决方法
  • 添加隐藏属性
copyInput.setAttribute('style', "display:none");//添加隐藏属性

虽然可以达到效果,但是节点中会存在大量input元素,不太理想,继续优化代码

  • 复制后删除该元素(最优)
copyInput.remove();
最终代码

<button @click='linkUrl(item)'>点击复制</button>

linkUrl(item){
	let url = item.url;//拿到想要复制的值
	let copyInput = document.createElement('input');//创建input元素
	document.body.appendChild(copyInput);//向页面底部追加输入框
	copyInput.setAttribute('value', url);//添加属性,将url赋值给input元素的value属性
	copyInput.select();//选择input元素
	document.execCommand("Copy");//执行复制命令
	this.$message.success("链接已复制!");//弹出提示信息,不同组件可能存在写法不同
	//复制之后再删除元素,否则无法成功赋值
	copyInput.remove();//删除动态创建的节点
}

如果大家有更好的解决办法可以交流一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萌萌哒小可爱啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值