recherche

Maison  >  Questions et réponses  >  le corps du texte

Alternative pour copier ou télécharger le code QR (vue-qrcode) généré à l'aide de VueJs

J'utilise le plugin "vue-qrcode" pour générer des codes QR permettant aux utilisateurs de générer des codes QR pour leurs liens de profil public afin qu'ils puissent les partager sur leurs cartes de visite.

Maintenant, l'idée est de donner à l'utilisateur la possibilité de télécharger le code QR via un bouton et de copier le code QR dans le presse-papier via un autre bouton pour faciliter l'envoi par mail (notamment pour les utilisateurs de smartphones).

Le problème est le suivant : je ne sais pas comment télécharger ou copier le code QR. Est-ce que quelqu'un sait comment copier ou télécharger le code QR ? Actuellement, j'utilise "vue-clipboard2" pour copier des liens, etc. mais je n'arrive pas à copier des images.

J'utilise le code suivant pour afficher le code QR sur notre site internet :

<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>

Merci - Chrétien

P粉294954447P粉294954447433 Il y a quelques jours873

répondre à tous(1)je répondrai

  • P粉023326773

    P粉0233267732023-11-06 12:21:45

    J'ai trouvé une solution. La solution est la suivante :

    Zone du modèle :

    <qrcode-vue 
        id="qrblock"
        :value = "linkToSki" 
        size = 220
        level = "M"
        ref="qrcode"
      ></qrcode-vue>

    Domaine fonctionnel :

    // -- 复制/下载二维码的功能区域 - 结束 ---
    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();
      }
      // -- 复制/下载二维码的功能区域 - 结束 ---

    répondre
    0
  • Annulerrépondre