javascript實現的同時按下ctrl和其他鍵觸發事件
在實際的電腦操作中,經常需要同時按下ctrl和一個其他指定的鍵來實現特定的功能,比如ctrl+A和實現全選功能。
下面就介紹一下如何利用javascript實現同時按下ctrl和其他鍵觸發一個事件的功能。
程式碼如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> #show{ width:300px; line-height:100px; background:#CCC; font-size:12px; text-align:center; margin:0px auto; } </style> <script type="text/javascript"> window.onload=function(){ HotKeyHandler.Init(); } var HotKeyHandler={ currentMainKey:null, currentValueKey:null, Init:function(){ HotKeyHandler.Register(0,"K",function(){alert("softwhy.com");}); }, Register:function(tag,value,func){ var MainKey=""; switch(tag){ case 0: MainKey=17; //Ctrl break; case 1: MainKey=16; //Shift break; case 2: MainKey="18"; //Alt break; } document.onkeyup=function(e){ HotKeyHandler.currentMainKey=null; } document.onkeydown=function(event){ var keyCode= event.keyCode ; var keyValue = String.fromCharCode(event.keyCode); if(HotKeyHandler.currentMainKey!=null){ if(keyValue==value){ HotKeyHandler.currentMainKey=null; if(func!=null)func(); } } if(keyCode==MainKey){ HotKeyHandler.currentMainKey=keyCode; } } } } </script> </head> <body> <div id="show">按下ctrl和k鍵觸發事件</div> </body> </html>
上面的程式碼實現了我們的要求,下面介紹一下它的實現過程。
一.程式碼註釋:
1.window.onload=function(){HotKeyHandler.Init();} ,當文件內容完全載入完畢再去執行HotKeyHandler.Init()。
2.var HotKeyHandler={},這個是對功能的封裝,可以看做一個名稱空間,可以有效的防止衝突。
3.currentMainKey:null,此屬性賦初值為null,用來儲存按鍵碼。
4.currentValueKey:null,此屬性賦初值為null,用來儲存按鍵的值,也就是abc這樣的東西。
5.Init:function(){HotKeyHandler.Register(0,"K",function(){alert("softwhy.com");});},此函式用來註冊事件處理函式,函式第一個引數是一個標識值,比如0代表按下ctrl,1代表按下shift,第二個引數是要按下ctrl加哪個鍵,第三個是事件觸發喲啊執行的函式。6.Register:function(tag,value,func),用來註冊事件處理函式,引數的作用上面已經介紹了。
7.var MainKey="",宣告一個變數並賦值為空字串,用來儲存按鍵碼的。
8.switch(tag){
case 0:
MainKey=17;
break;
case 1:
MainKey=16;
break;
case 2:
MainKey="18";
break;
} ,這個switch語句就是用來判斷是要按下ctrl、shift還是alt鍵。9.document.onkeyup=function(e){
HotKeyHandler.currentMainKey=null;
},註冊onkeyup事件處理函式,當按鍵鬆開的時候會清空currentMainKey,否則相當於ctrl等鍵一直處於按下的狀態。
10.document.onkeydown=function(event){},註冊onkeydow事件處理函式,也就是當按下鍵盤會觸發此事件。11.var keyCode= event.keyCode,獲取按鍵碼。
12.var keyValue = String.fromCharCode(keyCode),按鍵碼和ASCII碼有重合的部分,比如數字和字母,所以這樣可以獲取到底是按下了哪個鍵。
13.if(HotKeyHandler.currentMainKey!=null),如果為空,也就是ctrl等鍵還沒有按下。
14.if(keyValue==value){
HotKeyHandler.currentMainKey=null;
if(func!=null)func();
} ,判斷按鍵值是否等於value,在本程式碼中就是是不是k,如果是就清空currentMainKey,因為一個完整的操作已經完成,然後執行響應的函式。
15.if(keyCode==MainKey){
HotKeyHandler.currentMainKey=keyCode;
},判斷是否按下了ctrl等鍵,如果是就賦值給currentMainKey。
二.相關閱讀:
1.switch語句可以參閱javascript switch一章節。
2.keyCode可以參閱js的鍵盤按鍵keyCode屬性值對應表一章節。
3.fromCharCode()函式可以參閱javascript fromCharCode()一章節。
相關文章
- javascrip 按下ctrl和enterEnter鍵實現提交表單Java
- jQuery實現的點選Enter鍵觸發指定事件jQuery事件
- jQuery如何實現點選Enter鍵觸發事件jQuery事件
- postgresql 按小時分表(含觸發器)的實現方式SQL觸發器
- js實現的按鈕不用人為點選就觸發點選事件JS事件
- win10自動按下ctrl鍵怎麼辦_win10預設按下ctrl如何解決Win10
- JavaScript 模擬事件觸發JavaScript事件
- MUI TableViewCell 上按鈕點選Cell同時觸發解決UIView
- js實現的指定時間後觸發事件程式碼例項JS事件
- win10 fn按鍵功能和ctrl對調怎麼替代_win10 fn按鍵功能和ctrl對調如何操作Win10
- Elementary OS使用Xkb修改按鍵對映,同時適用於其他使用Xkb庫的Linux發行版Linux
- 求助:在JSP中怎麼實現定時觸發事件JS事件
- JavaScript中短時間高頻次觸發事件的最佳化JavaScript事件
- 一段實現HTML頁面內定期觸發事件的JavaScript程式碼HTML事件JavaScript
- Android觸控事件(下)——事件的分發Android事件
- javascript如何獲取觸發事件的物件JavaScript事件物件
- jQuery 實現 Ctrl+Enter 快捷鍵發表評論jQuery
- javascript實現的禁止使用右鍵或者ctrl+v複製黏貼JavaScript
- javascript避免dom事件重複觸發JavaScript事件
- 原生javascript如何獲取觸發事件的物件JavaScript事件物件
- js 建立和觸發事件 和 自定義事件JS事件
- JS判斷鍵盤是否按的Enter鍵並觸發指定按鈕點選操作JS
- 微信小程式避免按鈕重複觸發事件微信小程式事件
- touch事件和click事件多次觸發的問題事件
- J2ME開發中的按鍵事件事件
- IDLE中用Ctrl + L快捷鍵實現清屏
- javascript 事件觸發以後函式指定時間後再執行JavaScript事件函式
- 只有存在submit提交按鈕form的submit事件才會觸發MITORM事件
- window caps 轉換成 ctrl 按鍵對映
- 啟動按ctrl鍵 遮蔽自動隱藏功能
- 實現android按下Enter鍵便隱藏輸入鍵盤Android
- 雙擊事件(dblclick)時,不觸發單擊事件(click)事件
- Android觸控事件(續)——點選長按事件Android事件
- 純js實現點選一個事件後,觸發另外一個事件的方法JS事件
- 使用mousedown事件使用右鍵觸發無反應事件
- react中 Ender鍵 觸發事件數(輸入框)React事件
- vue 表單驗證按鈕事件交由父元件觸發Vue事件元件
- asp.net 頁面回車觸發button按鈕事件ASP.NET事件