最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js客戶端快捷鍵管理類的較完整實(shí)現(xiàn)和應(yīng)用

 更新時(shí)間:2010年06月08日 00:04:48   作者:  
js客戶端快捷鍵管理類的較完整實(shí)現(xiàn)和應(yīng)用,需要的朋友可以參考下。
復(fù)制代碼 代碼如下:

//一個(gè)快捷鍵對(duì)象
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();
//添加一個(gè)快捷鍵綁定焦點(diǎn)(當(dāng)快捷鍵被激發(fā)時(shí)讓焦點(diǎn)落在指定id對(duì)象上)
//使用說(shuō)明key的值如果是“c,50”則表示“ctrl”和鍵碼為50的組合鍵
// "a,50" 則表示“alt”和鍵碼為50的組合鍵
// "s,50" 則表示“shift”和鍵碼為50的組合鍵
// "50" 則表示鍵碼為50的單鍵(建議使用組合鍵alt)
//id指的是快捷鍵對(duì)應(yīng)的焦點(diǎn)對(duì)象。
//dom指的是id對(duì)象所在的document對(duì)象
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+"已經(jīng)被注冊(cè) 不能重復(fù)注冊(cè)了");
return false;
}
};

//快捷鍵綁定方法(當(dāng)快捷鍵激發(fā)時(shí)觸發(fā)方法)
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 + ";已經(jīng)被注冊(cè) .重復(fù)注冊(cè)無(wú)效");
return false;
}
};

//--刪除一個(gè)快捷鍵
//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;
// }
// }
//};

//--判斷快捷鍵是不是重復(fù)注冊(cè)
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) 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) {
//獲得焦點(diǎn)
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) {
//獲得焦點(diǎn)
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) {
//獲得焦點(diǎn)
if (!keyone.isfun) {
keyone.dom.getElementById(keyone.id).focus();
} else {
keyone.fun();
}
event.keyCode=0;
return false;
}
event.keyCode=0;
break;

default:
//獲得焦點(diǎn)
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 < KeyConlor.list.length; 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) {
//獲得焦點(diǎn)
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) {
//獲得焦點(diǎn)
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) {
//獲得焦點(diǎn)
if (!keyone.isfun) {
keyone.dom.getElementById(keyone.id).focus();
} else {
keyone.fun();
}
event.keyCode=0;
return false;
}
break;

default:
//獲得焦點(diǎn)
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]
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>

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

相關(guān)文章

  • Function.prototype.bind用法示例

    Function.prototype.bind用法示例

    想必大家對(duì)Function.prototype.bind并不陌生吧,下面為大家介紹下它的簡(jiǎn)單調(diào)用及DOM調(diào)用,感興趣的朋友可以參考下
    2013-09-09
  • JavaScript中數(shù)組去重的5種方法

    JavaScript中數(shù)組去重的5種方法

    這篇文章主要介紹了JavaScript中數(shù)組去重的5種方法,文中講解非常詳細(xì),實(shí)例代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • JavaScript?微任務(wù)和宏任務(wù)講解

    JavaScript?微任務(wù)和宏任務(wù)講解

    這篇文章主要分享了JavaScript?微任務(wù)和宏任務(wù)講解,在js中,我們一般將所有的任務(wù)都分成兩類,一種是同步任務(wù),另外一種是異步任務(wù)。而在異步任務(wù)中,又有著更加細(xì)致的分類,那就是微任務(wù)和宏任務(wù),下面來(lái)一起學(xué)習(xí)js中的微任務(wù)和宏任務(wù)吧
    2021-12-12
  • JavaScript Event學(xué)習(xí)補(bǔ)遺 addEventSimple

    JavaScript Event學(xué)習(xí)補(bǔ)遺 addEventSimple

    這里有個(gè)addEventSimple和removeEventSimple函數(shù),有時(shí)候需要不那么顯眼的事件處理程序的時(shí)候我就用這兩個(gè)函數(shù)注冊(cè)。
    2010-02-02
  • 判斷客戶端瀏覽器是否安裝了Flash插件的多種方法

    判斷客戶端瀏覽器是否安裝了Flash插件的多種方法

    各種方法判斷客戶端瀏覽器是否安裝了Flash插件,對(duì)于必須要支持flash才能瀏覽的頁(yè)面來(lái)說(shuō),提前做下說(shuō)明,用戶體驗(yàn)會(huì)更好。
    2010-08-08
  • js this函數(shù)調(diào)用無(wú)需再次抓獲id,name或標(biāo)簽名

    js this函數(shù)調(diào)用無(wú)需再次抓獲id,name或標(biāo)簽名

    this就是你當(dāng)前要執(zhí)行的js所抓獲的節(jié)點(diǎn),這樣在js里就可以不用document.getElement之類的寫法來(lái)抓獲id,name或標(biāo)簽名,具體示例如下
    2014-03-03
  • 輕松理解JavaScript閉包

    輕松理解JavaScript閉包

    閉包機(jī)制是JavaScript的重點(diǎn)和難點(diǎn),本文希望能幫助大家輕松的學(xué)習(xí)閉包。下面跟著小編一起來(lái)看下吧
    2017-03-03
  • js使用正則實(shí)現(xiàn)ReplaceAll全部替換的方法

    js使用正則實(shí)現(xiàn)ReplaceAll全部替換的方法

    JS?沒(méi)有提供replaceAll這樣的方法。使用正則表可以達(dá)成Replace?的效果,感興趣的朋友看看下面的示例
    2014-08-08
  • 通過(guò)封裝scroll.js 獲取滾動(dòng)條的值

    通過(guò)封裝scroll.js 獲取滾動(dòng)條的值

    本文通過(guò)實(shí)例代碼給大家介紹了通過(guò)封裝scroll.js 獲取滾動(dòng)條的值的相關(guān)知識(shí),代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2018-07-07
  • 圖解JavaScript作用域鏈底層原理

    圖解JavaScript作用域鏈底層原理

    當(dāng)代碼在一個(gè)環(huán)境中執(zhí)行時(shí),會(huì)創(chuàng)建變量對(duì)象的一個(gè)作用域鏈,作用域鏈的用途是保證對(duì)執(zhí)行環(huán)境有權(quán)訪問(wèn)的所有變量和函數(shù)的有序訪問(wèn),下面這篇文章主要給大家介紹了關(guān)于JavaScript作用域鏈底層原理的相關(guān)資料,需要的朋友可以參考下
    2021-11-11

最新評(píng)論

琼海市| 红原县| 洪雅县| 江永县| 琼中| 合川市| 陇西县| 天津市| 金湖县| 张家界市| 庆阳市| 满洲里市| 玉山县| 石棉县| 东乡县| 太原市| 桐梓县| 丹阳市| 龙岩市| 安康市| 铅山县| 潼关县| 太仓市| 那坡县| 高淳县| 丽江市| 神池县| 平湖市| 获嘉县| 拉孜县| 巴里| 荆门市| 和林格尔县| 牡丹江市| 翼城县| 博白县| 富川| 德保县| 招远市| 曲松县| 天水市|