條碼掃描器其實就是一種輸入設備,跟鍵盤一樣。在控制台打印掃描過程,可以看出,掃描過程就像是在鍵盤上敲擊相應的鍵,keycode和鍵盤是一一對應的,只是輸入速度(間隔時間)比物理鍵盤輸入要快得多。我們可以通過監聽輸入間隔時間,來判斷到底是鍵盤輸入還是掃描輸入。
掃碼槍輸入的時間間隔一般在10毫秒以內,物理鍵盤輸入要遠大於這個數值,通常為80毫秒以上。因此,當輸入間隔時間小於30毫秒時,判斷為掃碼槍輸入,其余情況判斷為鍵盤輸入。
window.onload = function () {// 獲取掃描的二維碼
var code = "";
var lastTime, nextTime;
var lastCode, nextCode;
document.onkeypress = function (e) {
nextCode = e.which;
nextTime = new Date().getTime();
if (lastCode != null && lastTime != null && nextTime - lastTime <= 30) {// 掃碼槍
code += String.fromCharCode(lastCode);
} else if (lastCode != null && lastTime != null && nextTime - lastTime > 100) { // 鍵盤
code = "";
}
lastCode = nextCode;
lastTime = nextTime;
}
this.Template_rendering = function () {
this.onkeypress = function (e) {
if (e.which == 13) {
console.log(code);
// $('#code').text(code)
readcode({code: code}); // 調用readcode方法
code = "";
}
}
}
this.Template_rendering();
};