| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 | <!DOCTYPE html><html>  <head>    <title>QR Test</title>    <style>      #preview img {        border: 1px solid black;        float: left;        margin: 0 1em 1em 0;        width: 10em;      }    </style>  </head>  <body>    <h1>Simple browser demo using the FileReader API</h1>    <h2>Upload file</h2>    <input type="file" id="upload">    <h2>Result</h2>    <div id="preview"></div>    <script type="text/javascript" src="../../dist/index.js"></script>    <script type="text/javascript">      (function() {        'use strict';        var upload = document.getElementById('upload');        var preview = document.getElementById('preview');        var qr = new QrCode();        qr.callback = function(err, result) {          var span = document.querySelector('span') || document.createElement('span');          if(result){            span.textContent = result;          }          else{            span.textContent = 'Error! See error message in console!';            console.error(err);          }          preview.appendChild(span);        }        upload.addEventListener('change', function() {          for (var i = 0; i < this.files.length; i++) {            var file = this.files[i];            var imageType = /^image\//;            if (!imageType.test(file.type)) {              throw new Error('File type not valid');            }            // Read file            var reader = new FileReader();            reader.addEventListener('load', function() {              // Show as preview image              var img = document.querySelector('img') || document.createElement('img');              img.src = this.result;              preview.appendChild(img);              // Analyse code              qr.decode(this.result);            }.bind(reader), false);            reader.readAsDataURL(file);          }        }, false);      })();    </script>  </body></html>
 |