<!doctype html> <html> <head> <title>client side test for node-qrcode</title> <!--[if ie]><script type="text/javascript" src="vendors/excanvas/excanvas.js"></script><![endif]--> <script src="../build/qrcode.js"></script> <style>.b{display:block;}</style> </head> <body> <canvas id="test"></canvas> <label for="test-text" class="b">type here and watch it update!:</label> <textarea id="test-text" class="b"></textarea> <small style="color:#d4d4d4;" class="b">* i did not include jquery on purpose</small> <script> if (!window.console) { window.console = { log: function () {}, warn: function () {} } } var qrcodedraw = new qrcodelib.qrcodedraw() var drawQR = function (text) { qrcodedraw.draw(document.getElementById('test'), text, { version: 0, errorCorrectLevel: qrcodedraw.QRErrorCorrectLevel.L }, function (error, canvas) { if (error) { if (window.console && window.console.warn) { console.warn(error) } else { window.alert(error) } } }) } var ta = document.getElementById('test-text') var last = 0 var lastTime = 1 ta.addEventListener('keyup', function () { var l = Date.now() var z = this last = l setTimeout(function () { // this will kinda lock the browsers event loop for a sec. // it could have some setTimeout within processing to make it more client side friendly. or web workers... if (l === last) { var s = Date.now() drawQR(z.value) lastTime = Date.now() - s } }, lastTime + (lastTime / 2)) }, false) ta.value = 'i work client side too?' drawQR('i work client side too?') </script> </body> </html>