日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

js简单的设置快捷键,hotkeys捕获键盘键和组合键的输入

發(fā)布時(shí)間:2025/7/14 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 js简单的设置快捷键,hotkeys捕获键盘键和组合键的输入 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

設(shè)置快捷鍵




這是一個強(qiáng)健的 Javascript 庫用于捕獲鍵盤輸入和輸入的組合鍵,它沒有依賴,壓縮只有只有(~3kb)。

hotkeys on Github
hotkeys預(yù)覽

__ __ __ | |--..-----.| |_ | |--..-----..--.--..-----.| || _ || _|| < | -__|| | ||__ --||__|__||_____||____||__|__||_____||___ ||_____||_____|

創(chuàng)建

您將需要在您的系統(tǒng)上安裝的 Node.js。

# bower 安裝 $ bower install hotkeysjs# npm 安裝 $ npm install hotkeys-js# 在頁面上引用需要壓縮的話,運(yùn)行 $ 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: inputif(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將停止活動,并阻止默認(rèn)瀏覽器事件 hotkeys('ctrl+r', function(){ alert('停止刷新!'); return false });// 多個快捷方式做同樣的事情 hotkeys('?+r, ctrl+r', function(){ });// 對所有摁鍵執(zhí)行任務(wù) hotkeys('*','wcj', function(e){console.log('干點(diǎn)活兒',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, ?。

? Command(?)
? Control
? Option(alt)
? Shift
? Caps Lock(大寫)
fn 功能鍵就是fn(不支持)
?? return/Enter
space 空格鍵

修飾鍵判斷

可以對下面的修飾鍵判斷 shift alt option ctrl control command

hotkeys('shift+a,alt+d, w', function(e){console.log('干點(diǎn)活兒',e);if(hotkeys.shift) console.log('大哥你摁下了 shift 鍵!');if(hotkeys.ctrl) console.log('大哥你摁下了 ctrl 鍵!');if(hotkeys.alt) console.log('大哥你摁下了 alt 鍵!'); });

切換快捷鍵

如果在單頁面在不同的區(qū)域,相同的快捷鍵,干不同的事兒,之間來回切換。O(∩_∩)O !

// 一個快捷鍵,有可能干的活兒不一樣哦 hotkeys('ctrl+o, ctrl+alt+enter', 'issues', function(){console.log('干點(diǎn)活兒'); }); hotkeys('o, enter', 'files', function(){ console.log('另一種活兒'); });// 設(shè)定范圍scope hotkeys.setScope('issues'); // 默認(rèn)所有事兒都干哦

刪除標(biāo)記快捷鍵

刪除區(qū)域范圍標(biāo)記

hotkeys.deleteScope('issues');

解除綁定

hotkeys.unbind("ctrl+o, ctrl+alt+enter") 解除綁定兩組快捷鍵
hotkeys.unbind("ctrl+o","files") 解除綁定名字叫files鐘的一組快捷鍵

鍵判斷

判斷摁下的鍵是否為某個鍵

hotkeys('a', function(){console.log(hotkeys.isPressed("A")); //=> trueconsole.log(hotkeys.isPressed(65)); //=> true });

獲取摁下鍵值

獲取摁下綁定鍵的鍵值 hotkeys.getPressedKeyCodes()

hotkeys('command+ctrl+shift+a,f', function(){console.log(hotkeys.getPressedKeyCodes()); //=> [17, 65] 或者 [70] })

過濾

INPUT SELECT TEXTAREA 默認(rèn)不處理。
hotkeys.filter 返回 true 快捷鍵設(shè)置才會起作用,flase 快捷鍵設(shè)置失效。

hotkeys.filter = function(event){return true; } //如何增加過濾可編輯標(biāo)簽 <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

總結(jié)

以上是生活随笔為你收集整理的js简单的设置快捷键,hotkeys捕获键盘键和组合键的输入的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。