vue实现点击按钮复制图片(类似浏览器右键复制)

新需求有点击按钮生成二维码+点击复制二维码的功能,因为二维码是后端php生成的,所以这里我只做点击复制功能就行。
网上找了很多插件和办法,但是不是只能复制文字就是只能复制本地的图片(因为后端生成的图片是http:xxxxx.jpg)。最后找到了个直接调用浏览器自带的复制方法(类似浏览器右键复制图片)

npm i html2canvas //vue项目,首先下载html2canvas
import html2canvas from "html2canvas"; //在页面中引入
<!--页面内容-->
          <div id="QR-code" v-if="!qrState">
            <div id="QR-img">
              <img :src="this.imgUrl" alt="" style="width: 200px; height: 200px" />
            </div>
          </div>
    copyImg() {//点击复制二维码
      html2canvas(document.getElementById("QR-code")).then(async (canvas) => {
        // this.imgUrl = canvas.toDataURL();   //将this.imgurl转为base64图,因为这里后端返回已是base64位图,所以无需此方法
        const data = await fetch(this.imgUrl);
        const blob = await data.blob();
        if (navigator.clipboard == undefined) {  //注:此方法只能在localhost跟https协议下可用,http协议下不存在此方法
          this.$message.error("请在https协议下操作");
        } else {
          this.$message({
            message: "复制成功",
            type: "success",
          });
        }
        await navigator.clipboard.write([
          new ClipboardItem({
            [blob.type]: blob,
          }),
        ]);
      });
    },
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值