<!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(); //triggered errors will throw qrcodedraw.errorBehavior.length = false; var drawQR = function(text){ qrcodedraw.draw(document.getElementById('test'),text,function(error,canvas){ if(error) { if(window.console && window.console.warn) { console.warn(error); } else { alert(error); } } }); } var ta = document.getElementById('test-text'),last=0,lastTime = 1; ta.addEventListener('keyup',function(){ var l = Date.now(),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>