這是一個強健的 Javascript 庫用於捕獲鍵盤輸入和輸入的組合鍵,它沒有依賴,壓縮只有只有(~3kb)。javascript
hotkeys on Github
hotkeys預覽java
__ __ __ | |--..-----.| |_ | |--..-----..--.--..-----. | || _ || _|| < | -__|| | ||__ --| |__|__||_____||____||__|__||_____||___ ||_____| |_____|
您將須要在您的系統上安裝的 Node.js。git
# bower 安裝 $ bower install hotkeysjs # npm 安裝 $ npm install hotkeys-js # 在頁面上引用須要壓縮的話,運行 $ grunt dist # 在dist目錄中生成下列文件: # dist/hotkeys.js # dist/hotkeys.min.js # dist/hotkeys.min.map
// 定義a快捷鍵 hotkeys('a', function(event,handler){ //event.srcElement: input //event.target: input if(event.target === "input"){ alert('你在輸入框中按下了 a!') } alert('你按下了 a!') }); // 定義a快捷鍵 hotkeys('ctrl+a,ctrl+b,r,f', function(event,handler){ switch(handler.key){ case "ctrl+a":alert('你按下了ctrl+a!');break; case "ctrl+b":alert('你按下了ctrl+b!');break; case "r":alert('你按下了r!');break; case "f":alert('你按下了f!');break; } //handler.scope 範圍 }); // 返回false將中止活動,並阻止默認瀏覽器事件 hotkeys('ctrl+r', function(){ alert('中止刷新!'); return false }); // 多個快捷方式作一樣的事情 hotkeys('⌘+r, ctrl+r', function(){ }); // 對全部摁鍵執行任務 hotkeys('*','wcj', function(e){ console.log('乾點活兒',e); console.log("key.getScope()::",hotkeys.getScope()); if(hotkeys.shift) console.log('大哥你摁下了 shift 鍵!'); if(hotkeys.ctrl) console.log('大哥你摁下了 ctrl 鍵!'); if(hotkeys.alt) console.log('大哥你摁下了 alt 鍵!'); });
⇧
, shift
, option
, ⌥
, alt
, ctrl
, control
, command
, ⌘
。github
⌘
Command() ⌃
Control ⌥
Option(alt) ⇧
Shift ⇪
Caps Lock(大寫) fn
功能鍵就是fn(不支持) ↩︎
return/Enterspace
空格鍵npm
能夠對下面的修飾鍵判斷 shift
alt
option
ctrl
control
command
瀏覽器
hotkeys('shift+a,alt+d, w', function(e){ console.log('乾點活兒',e); if(hotkeys.shift) console.log('大哥你摁下了 shift 鍵!'); if(hotkeys.ctrl) console.log('大哥你摁下了 ctrl 鍵!'); if(hotkeys.alt) console.log('大哥你摁下了 alt 鍵!'); });
若是在單頁面在不一樣的區域,相同的快捷鍵,幹不一樣的事兒,之間來回切換。O(∩_∩)O !svg
// 一個快捷鍵,有可能幹的活兒不同哦 hotkeys('ctrl+o, ctrl+alt+enter', 'issues', function(){ console.log('乾點活兒'); }); hotkeys('o, enter', 'files', function(){ console.log('另外一種活兒'); }); // 設定範圍scope hotkeys.setScope('issues'); // 默認全部事兒都幹哦
刪除區域範圍標記grunt
hotkeys.deleteScope('issues');
hotkeys.unbind("ctrl+o, ctrl+alt+enter")
解除綁定兩組快捷鍵 hotkeys.unbind("ctrl+o","files")
解除綁定名字叫files鐘的一組快捷鍵lua
判斷摁下的鍵是否爲某個鍵spa
hotkeys('a', function(){ console.log(hotkeys.isPressed("A")); //=> true console.log(hotkeys.isPressed(65)); //=> true });
獲取摁下綁定鍵的鍵值 hotkeys.getPressedKeyCodes()
hotkeys('command+ctrl+shift+a,f', function(){ console.log(hotkeys.getPressedKeyCodes()); //=> [17, 65] 或者 [70] })
INPUT
SELECT
TEXTAREA
默認不處理。 hotkeys.filter
返回 true
快捷鍵設置纔會起做用,flase
快捷鍵設置失效。
hotkeys.filter = function(event){ return true; } //如何增長過濾可編輯標籤 <div contentEditable="true"></div> //contentEditable老瀏覽器不支持滴 hotkeys.filter = function(event) { var tagName = (event.target || event.srcElement).tagName; return !(tagName.isContentEditable || tagName == 'INPUT' || tagName == 'SELECT' || tagName == 'TEXTAREA'); } // hotkeys.filter = function(event){ var tagName = (event.target || event.srcElement).tagName; hotkeys.setScope(/^(INPUT|TEXTAREA|SELECT)$/.test(tagName) ? 'input' : 'other'); return true; }
var k = hotkeys.noConflict(); k('a', function() { console.log("這裏能夠幹一些事兒") }); hotkeys() // -->Uncaught TypeError: hotkeys is not a function(anonymous function) // @ VM2170:2InjectedScript._evaluateOn // @ VM2165:883InjectedScript._evaluateAndWrap // @ VM2165:816InjectedScript.evaluate @ VM2165:682