复制代码 代码如下:
//一个快捷键对象
function keyone(id, keys, dom, isfun, fun,iskeydown) {
this.id = id;
this.keys = keys;
this.dom = dom;
this.isfun = isfun;
this.fun = fun;
this.iskeydown = iskeydown;
}
//快捷键管理类
var keyconlor = {};
keyconlor.list = new array();
//添加一个快捷键绑定焦点(当快捷键被激发时让焦点落在指定id对象上)
//使用说明key的值如果是“c,50”则表示“ctrl”和键码为50的组合键
// a,50 则表示“alt”和键码为50的组合键
// s,50 则表示“shift”和键码为50的组合键
// 50 则表示键码为50的单键(建议使用组合键alt)
//id指的是快捷键对应的焦点对象。
//dom指的是id对象所在的document对象
keyconlor.addkeyfouse = function(id, key, dom, iskyedown) {
var keyone = new keyone(id, key, dom, false, null, iskyedown);
if (keyconlor.keyisok(keyone)) {
keyconlor.list.push(keyone);
} else {
alert(快捷键+keyone.keys+已经被注册 不能重复注册了);
return false;
}
};
//快捷键绑定方法(当快捷键激发时触发方法)
keyconlor.addkeyfun = function(key, fun, iskeydown) {
var keyone = new keyone(, key, , true, fun, iskeydown);
if (keyconlor.keyisok(keyone)) {
keyconlor.list.push(keyone)
} else {
alert(快捷键: + keyone.keys + ;已经被注册 .重复注册无效);
return false;
}
};
//--删除一个快捷键
//keyconlor.removefousekey = function(id) {
// var keyone = new keyone(id, );
// for (var i = 0; i // if (keyone.id == keyconlor.list[i].id) {
// keyconlor.list[i] = null;
// }
// }
//};
//--判断快捷键是不是重复注册
keyconlor.keyisok = function(keyone) {
for (var i = 0; i if (keyconlor.list[i].keys == keyone.keys) {
return false;
}
}
return true;
};
document.onkeydown = function() {
for (var i = 0; i var keyone = keyconlor.list[i];
if (!keyone.iskeydown) continue;
var control = keyone.keys.split(,)[0];
switch (control) {
case 's':
var code = keyone.keys.split(,).length > 1 ? keyone.keys.split(,)[1] : keyone.keys.split(,)[0];
if (event.shiftkey == true && event.keycode == code) {
//获得焦点
if (!keyone.isfun) {
keyone.dom.getelementbyid(keyone.id).focus();
} else {
keyone.fun();
}
event.keycode=0;
return false;
}
break;
case 'c':
var code = keyone.keys.split(,).length > 1 ? keyone.keys.split(,)[1] : keyone.keys.split(,)[0];
if (event.ctrlkey == true && event.keycode == code) {
//获得焦点
if (!keyone.isfun) {
keyone.dom.getelementbyid(keyone.id).focus();
} else {
keyone.fun();
}
event.keycode=0;
return false;
}
break;
case 'a':
var code = keyone.keys.split(,).length > 1 ? keyone.keys.split(,)[1] : keyone.keys.split(,)[0];
if (event.altkey == true && event.keycode == code) {
//获得焦点
if (!keyone.isfun) {
keyone.dom.getelementbyid(keyone.id).focus();
} else {
keyone.fun();
}
event.keycode=0;
return false;
}
event.keycode=0;
break;
default:
//获得焦点
var code = keyone.keys.split(,).length > 1 ? keyone.keys.split(,)[1] : keyone.keys.split(,)[0];
if (event.keycode == code && event.altkey == false && event.ctrlkey == false && event.shiftkey == false) {
if (!keyone.isfun) {
keyone.dom.getelementbyid(keyone.id).focus();
} else {
keyone.fun();
}
event.keycode=0;
return false;
}
break;
}
}
};
document.onkeyup = function() {
for (var i = 0; i var keyone = keyconlor.list[i];
if (keyone.iskeydown) continue;
var control = keyone.keys.split(,)[0];
switch (control) {
case 's':
var code = keyone.keys.split(,).length > 1 ? keyone.keys.split(,)[1] : keyone.keys.split(,)[0];
if (event.shiftkey == true && event.keycode == code) {
//获得焦点
if (!keyone.isfun) {
keyone.dom.getelementbyid(keyone.id).focus();
} else {
keyone.fun();
}
event.keycode=0;
return false;
}
break;
case 'c':
var code = keyone.keys.split(,).length > 1 ? keyone.keys.split(,)[1] : keyone.keys.split(,)[0];
if (event.ctrlkey == true && event.keycode == code) {
//获得焦点
if (!keyone.isfun) {
keyone.dom.getelementbyid(keyone.id).focus();
} else {
keyone.fun();
}
event.keycode=0;
return false;
}
break;
case 'a':
var code = keyone.keys.split(,).length > 1 ? keyone.keys.split(,)[1] : keyone.keys.split(,)[0];
if (event.altkey == true && event.keycode == code) {
//获得焦点
if (!keyone.isfun) {
keyone.dom.getelementbyid(keyone.id).focus();
} else {
keyone.fun();
}
event.keycode=0;
return false;
}
break;
default:
//获得焦点
var code = keyone.keys.split(,).length > 1 ? keyone.keys.split(,)[1] : keyone.keys.split(,)[0];
if (event.keycode == code && event.altkey == false && event.ctrlkey == false && event.shiftkey == false) {
if (!keyone.isfun) {
keyone.dom.getelementbyid(keyone.id).focus();
} else {
keyone.fun();
}
event.keycode=0;
return false;
}
break;
}
}
};
//常用键盘码
var keycodestr = {
alt: a,
shift: s,
ctrl: c,
up: 38,
down: 40,
left: 37,
right: 39,
esc: 27,
enter: 13,
backspace: 8,
delete: 46,
tab: 9,
capslk: 20,
space: 32
};
[code]
----------以上是js类-------------------------------
[code]