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()一章節。
相關文章
- postgresql 按小時分表(含觸發器)的實現方式SQL觸發器
- win10自動按下ctrl鍵怎麼辦_win10預設按下ctrl如何解決Win10
- win10 fn按鍵功能和ctrl對調怎麼替代_win10 fn按鍵功能和ctrl對調如何操作Win10
- JavaScript中短時間高頻次觸發事件的最佳化JavaScript事件
- javascript避免dom事件重複觸發JavaScript事件
- js 建立和觸發事件 和 自定義事件JS事件
- touch事件和click事件多次觸發的問題事件
- JS判斷鍵盤是否按的Enter鍵並觸發指定按鈕點選操作JS
- window caps 轉換成 ctrl 按鍵對映
- 微信小程式避免按鈕重複觸發事件微信小程式事件
- Odoo和其他SprinBoot框架同時存在時時區問題Odooboot框架
- 啟動按ctrl鍵 遮蔽自動隱藏功能
- Layui select實現主動賦值和觸發選擇事件,及radio實現可取消UI賦值事件
- 雙擊事件(dblclick)時,不觸發單擊事件(click)事件
- vue中在父元件點選按鈕觸發子元件的事件Vue元件事件
- vue 表單驗證按鈕事件交由父元件觸發Vue事件元件
- 使用mousedown事件使用右鍵觸發無反應事件
- react中 Ender鍵 觸發事件數(輸入框)React事件
- 12.2 實現鍵盤模擬按鍵
- Vue事件獲取觸發事件物件和繫結事件物件Vue事件物件
- win10系統下實現ctrl+空格鍵切換中英文的方法Win10
- 取消事件觸發事件
- MySQL怎麼利用函式和觸發器實現非主鍵自增?MySql函式觸發器
- 批量更新時無法觸發事件的解決方法事件
- MySQL中union和order by同時使用的實現方法MySql
- 簡單介紹Angular單元測試之事件觸發的實現Angular事件
- 如何使用原生的 JavaScript 程式碼,觸發 SAP UI5 按鈕控制元件的點選事件處理函式JavaScriptUI控制元件事件函式
- jQuery select 觸發事件jQuery事件
- 企圖為vuex新增發布訂閱:事件繫結和事件觸發Vue事件
- Layui Confirm彈出框連續點選按鈕會觸發多次事件UI事件
- 機智使用elementUI呼叫一次介面同時上傳圖片和檔案,同時需要攜帶其他引數,實現呼叫後端介面UI後端
- javascript–BOM的onload事件和onunload事件JavaScript事件
- 查詢快捷鍵ctrl加什麼 wordexcel表格查詢快捷鍵是ctrl和什麼Excel
- 聊一下Button事件、命令、行為的觸發順序事件
- (五)自定義按鈕模板和設定觸發器觸發器
- 【JavaScript】鍵盤按鍵Keycode對照表(鍵碼對照表)JavaScript
- 使用 jQuery 觸發 Vue 事件jQueryVue事件
- 取消事件觸發(妙啊)事件
- win10系統下鍵盤ctrl鍵失靈的解決方法Win10