zl程序教程

您现在的位置是:首页 >  后端

当前栏目

js客户端快捷键管理类的较完整实现和应用

JS应用客户端 实现 管理 快捷键 较完整
2023-06-13 09:14:19 时间
复制代码代码如下:

//一个快捷键对象
functionKeyOne(id,keys,dom,isfun,fun,iskeydown){
this.id=id;
this.keys=keys;
this.dom=dom;
this.isfun=isfun;
this.fun=fun;
this.isKeydown=iskeydown;
}

//快捷键管理类
varKeyConlor={};
KeyConlor.list=newArray();
//添加一个快捷键绑定焦点(当快捷键被激发时让焦点落在指定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){
varkeyone=newKeyOne(id,key,dom,false,null,iskyedown);
if(KeyConlor.KeyIsOK(keyone)){
KeyConlor.list.push(keyone);
}else{
alert("快捷键"+keyone.keys+"已经被注册不能重复注册了");
returnfalse;
}
};

//快捷键绑定方法(当快捷键激发时触发方法)
KeyConlor.addkeyfun=function(key,fun,iskeydown){
varkeyone=newKeyOne("",key,"",true,fun,iskeydown);
if(KeyConlor.KeyIsOK(keyone)){
KeyConlor.list.push(keyone)
}else{
alert("快捷键:"+keyone.keys+";已经被注册.重复注册无效");
returnfalse;
}
};

//--删除一个快捷键
//KeyConlor.removeFouseKey=function(id){
//varkeyone=newKeyOne(id,"");
//for(vari=0;i<KeyConlor.list.length;i++){
//if(keyone.id==KeyConlor.list[i].id){
//KeyConlor.list[i]=null;
//}
//}
//};

//--判断快捷键是不是重复注册
KeyConlor.KeyIsOK=function(keyone){
for(vari=0;i<KeyConlor.list.length;i++){
if(KeyConlor.list[i].keys==keyone.keys){
returnfalse;
}
}
returntrue;
};
document.onkeydown=function(){
for(vari=0;i<KeyConlor.list.length;i++){
varkeyone=KeyConlor.list[i];
if(!keyone.isKeydown)continue;
varcontrol=keyone.keys.split(",")[0];
switch(control){
case"s":
varcode=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;
returnfalse;
}
break;
case"c":
varcode=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;
returnfalse;
}
break;
case"a":
varcode=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;
returnfalse;
}
event.keyCode=0;
break;

default:
//获得焦点
varcode=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;
returnfalse;
}
break;
}
}
};
document.onkeyup=function(){
for(vari=0;i<KeyConlor.list.length;i++){
varkeyone=KeyConlor.list[i];
if(keyone.isKeydown)continue;
varcontrol=keyone.keys.split(",")[0];
switch(control){
case"s":
varcode=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;
returnfalse;
}
break;
case"c":
varcode=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;
returnfalse;
}
break;
case"a":
varcode=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;
returnfalse;
}
break;

default:
//获得焦点
varcode=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;
returnfalse;
}
break;
}
}
};
//常用键盘码
varkeyCodeStr={
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]
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title></title>

<scriptsrc="KyeControl.js"type="text/javascript"></script>
<scripttype="text/javascript">
KeyConlor.addkeyfun(keyCodeStr.Ctrl+","+"70",function(){alert("哈哈");},true);
KeyConlor.addkeyfouse("2","65",document,true);
</script>
</head>
<body>
<formid="form1">
<div>
<inputtype="text"id="2"/>
<inputtype="text"id="3"/>
<inputtype="text"id="4"/>
<inputtype="text"id="5"/>
</div>
</form>
</body>
</html>