場景:
掃碼槍掃碼,獲取信息,js代碼如何獲取掃描信息呢?
原理:
掃碼槍輸入會觸發(fā)鍵盤輸入事件。
掃碼槍輸入的時間間隔一般在8毫秒,偶爾會有16毫秒,而鍵盤輸入一般都在80毫秒以上。
var keycode = "";
var lastTime=null;
var nextTime=null;
var lastCode=null;
var nextCode=null;
document.onkeydown=function(e){
//兼容性處理
if(window.event){
nextCode = e.keyCode
} else if(e.which){
nextCode = e.which
}
//獲取當前時間
nextTime = new Date().getTime();
if(nextCode==13 && keycode!= "" && nextTime - lastTime <= 30){//回車字符
console.log(keycode);
keycode = "";
lastCode = null;
lastTime = null;
}else{//此處可以增加限制nextCode的種類例如數(shù)字
if(lastCode == null && lastTime == null){//初始字母
keycode = String.fromCharCode(nextCode);
}else if(lastCode != null && lastTime != null && nextTime - lastTime <= 30){
keycode += String.fromCharCode(nextCode);
}else{//手動輸入
keycode = "";
lastCode = null;
lastTime = null;
}
lastCode = nextCode;
lastTime = nextTime;
}
}