当按钮" GenQR"点击没有任何反应。
控制台
Uncaught ReferenceError: JSQR is not defined(index):26
myqr (index):26
(anonymous function) (index):51
jQuery.event.dispatch jquery-2.1.0.js:4371
elemData.handle
HTML
<button type="button" id="qr"/>GenQR</button>
qr.js
document.addEventListener('DomContentLoaded', function () {
document.getElementById('qr').addEventListener('click', myqr);
});
(function myqr() {
var qr = new JSQR();
var code = new qr.Code();
code.encodeMode = code.ENCODE_MODE.BYTE;
code.version = code.DEFAULT;
code.errorCorrection = code.ERROR_CORRECTION.H;
var input = new qr.Input();
input.dataType = input.DATA_TYPE.TEXT;
input.data = 'test';
var matrix = new qr.Matrix(input, code);
matrix.scale = 10;
matrix.margin = 10;
var canvas = document.createElement('canvas');
canvas.setAttribute('width', matrix.pixelWidth);
canvas.setAttribute('height', matrix.pixelWidth);
canvas.getContext('2d').fillStyle = 'rgb(0,0,0)';
matrix.draw(canvas, 0, 0);
document.body.appendChild(canvas);
})();
答案 0 :(得分:1)
在名为myqr()的JS函数中,您有以下语句:
var qr = new JSQR();
但是,在您的代码中没有定义JSQR,因此浏览器不知道您在说什么并抛出错误。
此外,单击按钮时没有任何反应,因为当出现上述错误时,函数退出...
答案 1 :(得分:0)
您提供的代码和小提琴有几个问题。第一个主要问题是jsqr没有像其他人提到的那样被定义。您需要设置jsqr库(http://code.jsqr.de/jsqr-0.2-min.js)的外部引用,否则它不知道该库是什么。
小提琴: http://jsfiddle.net/mcfarljw/n9PbR/
第二个问题是你调用了一个自调用函数,该函数在加载脚本时触发,因此在点击事件发生时不会被触发。
(function myqr() {
//your code here
})();
你应该把它变成这样的函数:
function myqr() {
//your code here
}
最后,您已将Click事件侦听器包装在DomContentLoaded侦听器中。当你使用jsfiddle配置它时,这是不需要的,因为脚本已经设置为运行onLoad。所以你可以删除它作为小提琴的例子,但是你需要在你的其他本地代码中加入类似的东西。