ホームページ  >  記事  >  ウェブフロントエンド  >  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 オブジェクトにフォーカスが置かれます)
//使用説明: key の値が "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);
alert("ショートカット キー" keyone.keys) "すでに登録されており、再登録できません");
return
}
} //ショートカット キー バインド メソッド (ショートカット キーがアクティブになったときにトリガーされるメソッド); 🎜>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 // 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;
}
}
document.onkeydown = function() {
for (var i = 0; i < KeyConlor.list.length; i ) {
var keyone = KeyConlor.list[i];
var control = keyone.keys.split (",") [0];
スイッチ (コントロール) {
ケース 's':
var code = keyone.keys.split(",").length > 1 ? .split(", ")[1] : keyone.keys.split(",")[0];
if (event.shiftKey == true &&event.keyCode == コード) {
//フォーカスを取得
if (!keyone.isfun) {
keyone.dom.getElementById(keyone.id).focus();
} else {
keyone.fun();
event.keyCode=0;
return false;
case 'c':
var code = keyone.keys.split(",") > 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;
case 'a':
var code = keyone.keys.split (",") .length > 1 ? keyone.keys.split(",")[0];
if (event.altKey == true) &&event.keyCode = = code) {
//フォーカスを取得
if (!keyone.isfun) {
keyone.dom.getElementById(keyone.id).focus();
} {
keyone();
}
event.keyCode=0;
}
event.keyCode=0;
デフォルト:
//フォーカスを取得
var code = keyone.keys.split(",").length > 1 ? keyone.keys.split(",")[1] : keyone. key.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;
}
}
}
};
document.onkeyup = function() {
for (var i = 0; i
var keyone = KeyConlor.list[i];
if (keyone.isKeydown); ",")[ 0];
スイッチ (コントロール) {
ケース 's':
var code = keyone.keys.split(",").length > 1 ? 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;
}
case 'c':
var code = keyone.keys.split(",").length > ; 1 ? keyone.keys.split(",")[1] : keyone.keys.split(",")[0];
if (event.ctrlKey == true && events.keyCode == コード) {
/ /Get focus
if (!keyone.isfun) {
keyone.dom.getElementById(keyone.id).focus();
} else {
keyone.fun( );
}
event.keyCode=0;
return false;
case 'a':
var code = keyone.keys.split( ",").長さ > 1 ? keyone.keys.split(",")[0]; event.keyCode == code) {
//フォーカスを取得
if (!keyone.isfun) {
keyone.dom.getElementById(keyone.id).focus();
}
keyone.fun();
}
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();
keyone.fun()
}
return false; 🎜>}
休憩
}
}
};
//常用键盘码
var keyCodeStr = {
Alt: "a",
Shift: "s",
Ctrl: "c",
Up: "38" 、
下: "40"、
左: "37"、
右: "39"、
Esc: "27"、
Enter: "13"、
Backspace : "8"、
削除: "46"、
タブ: "9"、
CapsLK: "20"、
スペース: "32"
};
[コード]
----------以上はjs类--------------------------- ----

[コード]


















声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。