首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用主播复制或下载生成的QR (vue-qrcode)码

用主播复制或下载生成的QR (vue-qrcode)码
EN

Stack Overflow用户
提问于 2020-11-27 17:05:13
回答 1查看 1.3K关注 0票数 1

我使用"vue-qrcode“插件为我的用户生成一个二维码,以便他们可以在自己的名片上分享。

现在的想法是让我的用户可以通过一个按钮下载二维码,并通过另一个按钮将二维码复制到剪贴板,使其更容易发送,例如通过邮件(特别是智能手机用户)。

问题:我不知道如何下载或复制二维码。有人知道如何复制或下载二维码吗?目前我使用'vue-clipboard2‘来复制链接等,但它似乎不能复制图像。

我使用下面的代码在我们的网站上显示二维码:

代码语言:javascript
复制
<template>
  <qrcode-vue 
    style = "cursor: pointer;" 
    :value = "linkToProfile" 
    size = 160 
    level = "M"
    :background = "backgroundcolor_qrcode"
    :foreground = "color_qrcode"
  ></qrcode-vue>
</template>

<script>
  import Vue from 'vue'
  import QrcodeVue  from 'qrcode.vue'
  Vue.component('qrcode-vue', QrcodeVue )

  export default {
    data: () => ({
      linkToProfile: "http://www.example.com/johnDoe",
    })

</script>

谢谢--克里斯蒂安

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-20 05:30:25

我想通了。解决方案看起来像这样:

模板区:

代码语言:javascript
复制
  <qrcode-vue 
    id="qrblock"
    :value = "linkToSki" 
    size = 220
    level = "M"
    ref="qrcode"
  ></qrcode-vue>

FUNCITONS区域:

代码语言:javascript
复制
// -- FUNCTIONS AREA TO COPY / DOWNLOAD QR CODE - END ---
function selectText(element) {
    if (document.body.createTextRange) {
      const range = document.body.createTextRange();
      range.moveToElementText(element);
      range.select();
    } else if (window.getSelection) {
      const selection = window.getSelection();
      const range = document.createRange();
      range.selectNodeContents(element);
      selection.removeAllRanges();
      selection.addRange(range);
    }
  }

  function copyBlobToClipboardFirefox(href) {
    const img = document.createElement('img');
    img.src = href;
    const div = document.createElement('div');
    div.contentEditable = true;
    div.appendChild(img);
    document.body.appendChild(div);
    selectText(div);
    const done = document.execCommand('Copy');
    document.body.removeChild(div);
    return done;
  }

  function copyBlobToClipboard(blob) {
    // eslint-disable-next-line no-undef
    const clipboardItemInput = new ClipboardItem({
      'image/png' : blob
    });
    return navigator.clipboard
      .write([clipboardItemInput])
      .then(() => true)
      .catch(() => false);
  }

  function downloadLink(name, href) {
    const a = document.createElement('a');
    a.download = name;
    a.href = href;
    document.body.append();
    a.click();
    a.remove();
  }
  // -- FUNCTIONS AREA TO COPY / DOWNLOAD QR CODE - END ---
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65034575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档