>  기사  >  웹 프론트엔드  >  js 클라이언트 단축키 관리 class_javascript 기술의 더욱 완벽한 구현 및 적용

js 클라이언트 단축키 관리 class_javascript 기술의 더욱 완벽한 구현 및 적용

WBOY
WBOY원래의
2016-05-16 18:25:261196검색
코드 복사 코드는 다음과 같습니다.

//단축키 객체
function KeyOne(id,keys,dom,isfun,fun,iskeydown){
this.id = id
this.keys =keys; 🎜>this.dom = dom;
this.isfun = isfun;
this.isKeydown = iskeydown;

//단축키 관리 Class
var KeyConlor = {};
KeyConlor.list = new Array();
//단축키 바인딩 포커스 추가(단축키가 활성화되면 포커스가 지정된 ID 객체에 놓이도록 함)
//사용 지침: 키 값이 "c,50"이면 "ctrl"을 의미하고 키 코드는 50입니다.
// "a,50"은 "alt"를 의미하고 키는 코드는 50입니다. 키 조합
// "s,50"은 "shift"를 의미하고 키 코드 50을 포함한 키 조합
// "50"은 키 코드 50을 가진 단일 키를 의미합니다(권장 사항) alt 키 조합 사용)
//id는 단축키에 해당하는 포커스 객체를 나타냅니다.
//dom은 id 객체가 위치한 문서 객체를 참조합니다.
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 "; 이미 등록되었습니다. 반복 등록은 유효하지 않습니다.");
}
};

//-단축키 삭제
//KeyConlor.removeFouseKey = function(id) {
// var keyone = new KeyOne(id, "") ;
// for (var i = 0; i < KeyConlor.list.length; i ) {
// if (keyone.id == KeyConlor.list[i].id) {
// KeyConlor.list[i] = null;
// }
// }
//};

//--단축키가 중복 등록
KeyConlor.KeyIsOK = function(keyone) {
for (var i = 0; i < KeyConlor.list.length; i ) {
if (KeyConlor.list[i].keys = = keyone.keys) {
return false;
}
}
return true
}
document.onkeydown = function() {
for (var i = 0; i < KeyConlor.list.length; i ) {
var keyone = KeyConlor.list[i]
if (!keyone.isKeydown)
var control = keyone.keys.split (",") [0];
스위치(컨트롤) {
case 's':
var code = keyone.keys.split(",").length > .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 == 코드 ) {
//포커스 가져오기
if (!keyone.isfun) {
keyone.dom.getElementById(keyone.id).focus()
} else {
keyone.fun ();
}
event.keyCode=0;
return false;
}
break
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;
기본값:
//포커스 가져오기
var code = keyone.keys.split(",").length > 1 ? keyone.keys.split(",")[1] : keyone. keys.split(" ,")[0];
if (event.keyCode == 코드 && 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 =
for (var i = 0; i < KeyConlor.list.length; i ) {
var keyone = KeyConlor.list[i]
if (keyone.isKeydown)
var control = keyone.keys.split( ",")[ 0];
스위치(컨트롤) {
case 's':
var code = keyone.keys.split(",").length > Split("," )[1] : keyone.keys.split(",")[0];
if (event.shiftKey == true && event.keyCode == code) {
//Get focus
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(",")[0] :
if (event.ctrlKey == true && event.keyCode == 코드) {
/ /포커스 가져오기
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( ","). 길이 > 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;

기본값:
// 포커스 가져오기
var code = keyone.keys.split(",").length > 1 ? keyone.keys.split(",")[1] : keyone.keys.split(",")[0 ];
if (event.keyCode == 코드 && 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; 🎜>}
휴식
}
}
};
//常用键盘码
var keyCodeStr = {
Alt: "a",
Shift: "s",
Ctrl: "c",
위: "38" ,
아래쪽: "40",
왼쪽: "37",
오른쪽: "39",
Esc: "27",
Enter: "13",
백스페이스 : "8",
삭제: "46",
탭: "9",
CapsLK: "20",
스페이스: "32"
};
[코드]
------------以上是js类---------------------------- ----

[코드]


<제목>




<본문>










성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.