#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 библиотеки, так как он может измениться в любое время.