Создайте изображение qr-кода, а затем преобразуйте его в base64

#javascript #jquery #base64 #qr-code

Вопрос:

Я использую http://davidshimjs.github.io/qrcodejs/ для создания qr-кода

           var qrcode = new QRCode("qrcode", {
            text: "http://jindo.dev.naver.com/collie",
            width: 128,
            height: 128,
            colorDark: "#000000",
            colorLight: "#ffffff",
            correctLevel: QRCode.CorrectLevel.H
          });
          console.log(qrcode);
          console.log(qrcode._el.children[1].currentSrc);
 

введите описание изображения здесь

Я могу найти код base64 в «qrcode».
Но почему я становлюсь пустым, когда убегаю:

 console.log(qrcode._el.children[1].currentSrc);
 

введите описание изображения здесь

Есть ли какой — либо другой способ получить код base64?

Ответ №1:

Попробуй:

 setTimeout(function () {
    const base64String = document.querySelector("#qrcode img").src;
});
 

Причина этого в том, что он просто работает асинхронно и ему требуется некоторое время, чтобы установить атрибут image.

Комментарии:

1. Да, вы правы. Но у меня есть вопрос, почему «console.log(qrcode)» может отображать элемент, но console.log(qrcode._el.children[1].currentSrc) не может отображать элемент?

2. По той же причине вы можете поместить его в setTimeout, и он будет работать. Консоль выводит ссылку на ваш переменный qr-код, поэтому всякий раз, когда что-либо меняется внутри этого объекта, это будет отражено в DevTools. Итак, к тому времени, когда вы проверяете qr-код._el.children[1].currentSrc, он уже заполнен. Я бы не рекомендовал вам использовать закрытый API библиотеки, так как он может измениться в любое время.