yzms/touch/index.html

163 lines
4.0 KiB
HTML

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<title>iView project</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;">
<link rel="stylesheet" href="/touch/dist/main.css">
</head>
<body>
<div id="app"></div>
<script type="text/javascript" src="/touch/dist/vendors.js"></script>
<script type="text/javascript" src="/touch/dist/main.js"></script>
</body>
<script>
var kb_status = '1';
var kb_readStr = '';
var kb_isstart = false;
var kb_readfunc = '';
function start_read(func) {
kb_isstart = true;
kb_readfunc = func;
kb_status = '1';
kb_readStr = '';
}
function stop_read() {
kb_isstart = false;
kb_readfunc = '';
}
function fromKeyCode(code) {
if ((code >= 48 && code <= 57) || (code >= 65 && code <= 90)) return String.fromCharCode(code);
var keys = {
186: ';', 188: ',', 189: '-', 190: '.', 191: '/', 222: "'", 219: '[', 221: ']', 187: '=',
96: 'Num 0', 97: 'Num 1', 98: 'Num 2', 99: 'Num 3', 100: 'Num 4', 101: 'Num 5', 102: 'Num 6', 103: 'Num 7', 104: 'Num 8', 105: 'Num 9',
111: 'Num /', 106: 'Num *', 109: 'Num -', 111: 'Num /', 107: 'Num +', 13: '[enter]', 8: '[back]', 110: 'Num .'
};
if (keys[code]) return keys[code];
return '*err*';
}
function hashCode(strKey) {
var hash = 0;
if (strKey != null && strKey != "") {
for (var i = 0; i < strKey.length; i++) {
hash = hash * 31 + strKey.charCodeAt(i);
hash = intValue(hash);
}
}
return hash;
}
function intValue(num) {
var MAX_VALUE = 0x7fffffff;
var MIN_VALUE = -0x80000000;
if (num > MAX_VALUE || num < MIN_VALUE) {
return num &= 0xFFFFFFFF;
}
return num;
}
document.onkeydown = function () {
if (!kb_isstart) return;
var code = event.keyCode;
//[st]sduf87fjsdfysd78,526976123;
if (code == 16) return;
kb_dealKey(fromKeyCode(code));
}
function kb_dealKey(c) {
if (kb_status == '1') { //开始
if (c == '[') {
kb_status = '2';
} else if (c == ';') { //IC卡
kb_status = '6';
}
else kb_readErr(2);
} else if (kb_status == '2') { //读取s
if (c == 'S') kb_status = '3';
else {
kb_status = '1';
kb_readErr(3);
}
} else if (kb_status == '3') { //读取t
if (c == 'T') kb_status = '4';
else {
kb_status = '1';
kb_readErr(4);
}
} else if (kb_status == '4') { //读取]
if (c == ']') {
kb_status = '5';
kb_readStr = '';
} else {
kb_status = '1';
kb_readErr(5);
}
} else if (kb_status == '5') { //读取内容
if (c == ';') {
kb_status = '1';
var a = kb_readStr.split(",");
if (a.length == 2) {
var s1 = a[0].toLowerCase();
var hcode = a[1];
if (hashCode(s1) == hcode) {
kb_readContent(s1, 'qr');
} else {
//alert(s1+","+hcode+","+hashCode(s1));
kb_readErr(6);
}
} else {
kb_readErr(7);
}
kb_readStr = '';
} else {
if (c == '*err*') {
kb_status = '1';
kb_readErr(8);
} else {
kb_readStr += c;
}
}
} else if (kb_status == '6') { //IC卡读取内容
if (c == '/' || c == '[enter]') {
kb_status = '1';
var s1 = kb_readStr.toLowerCase();
kb_readContent(s1, 'ic');
kb_readStr = '';
} else {
if (c >= '0' && c <= '9') {
kb_readStr += c;
} else {
kb_status = '1';
kb_readErr(8, 'ic');
}
}
}
//$("div1").innerHTML += kb_status+"<br />";
}
function kb_readErr(rs, type) {
kb_status = '1';
kb_readStr = '';
//alert(from+":读取错误!"+rs);
var tname = '二维码';
if (type && type == 'ic') {
tname = 'IC卡';
}
}
function kb_readContent(str, type) {
if (!kb_isstart) return;
try { kb_readfunc(type, str); } catch (e) { }
}
</script>
</html>