Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

344
Visualizações
Descarga el código QR generado usando Javscript

Estoy usando esta biblioteca que genera códigos QR como imágenes PNG: https://davidshimjs.github.io/qrcodejs/

Quiero tener un botón de descarga para el código QR generado, sin embargo, el lienzo solo aparece cuando se genera la imagen. ¿Algún consejo sobre cómo poner un botón de descarga?

Aquí está mi código de muestra para mi proyecto:

PHP:

 <div> <!-- <input type="text" id="qr-data" value="<?php echo uniqid();; ?>"/> --> <button onclick="generateQR()">Generate</button> <div id="qrcode"></div> <script src="qrcode.min.js"></script> </div>

JavaScript:

 <script> var qrdata = document.getElementById("qr-data"); var qrcode = new QRCode(document.getElementById("qrcode")); function generateQR() { var data = qrdata.value; qrcode.makeCode(data); } </script>
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Una búsqueda rápida muestra una forma sencilla de descargar una imagen al hacer clic en ella :

  • necesitamos un enlace;
  • con un atributo de download ;
  • con el mismo href que la imagen src ;

La imagen src que buscamos no existe hasta que se genera el código. Entonces necesitamos copiarlo dinámicamente una vez que se crea. Por lo tanto, necesitaremos agregar un enlace/botón de descarga a su HTML y copiar el código QR src al enlace href después de generarlo.

Entonces, primero, agregue el enlace:

 <a id="download" href="" download="qr.png"><button>Download</button></a>

A continuación, necesitamos copiar el src generado. Un inconveniente es que debemos esperar a que se genere el código QR antes de poder copiarlo. Intentar hacer la copia inmediatamente después de su línea makeCode() no funciona, porque makeCode() tarda un tiempo en ejecutarse y se ejecuta de forma asíncrona. Eso significa que el código inmediatamente después de esa línea se ejecutará antes de que makeCode() haya terminado. ¡No podemos copiar el src antes de que exista el src !

No hay eventos documentados de tipo exitoso o terminado o devoluciones de llamada para QRCode.js, por lo que la opción más segura parece ser hacerlo más tarde, cuando se hace clic en el botón de descarga. Así que agregue un detector de eventos para nuestro enlace de descarga:

 var link = document.getElementById("download"); link.addEventListener("click", setUpDownload);

Y agregue la función setUpDownload() que realmente hace la copia:

 function setUpDownload() { // Find the image inside the #qrcode div var image = document.getElementById("qrcode").getElementsByTagName("img"); // Get the src attribute of the image, which is the data-encoded QR code var qr = image[0].src; // Copy that to the download link link.href = qr; }

¡Y hemos terminado! Trabajando JSFiddle .

Nota al margen

Se considera una buena práctica separar su HTML de su JS. Eso significa usar controladores de eventos en JS, en lugar de usar onclick() en línea. Yo sugeriría cambiar esto:

 <button onclick="generateQR()">Generate</button>

A esto (déle una id para que sea fácil de consultar más adelante):

 <button id="button">Generate</button>

Y agregar un detector de eventos en su JS para hacer el mismo trabajo:

 var button = document.getElementById("button"); button.addEventListener("click", generateQR);
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda