如何实现用户自定义的键盘快捷键(在javascript/网络上)
标题说明了其中的大部分。我想要一个javascript/html解决方案,了解如何创建持久的、用户可配置的键盘快捷键侦听器(如果您有偏好,还需要考虑如何真正持久化它们) 这看起来既简单又有点棘手:)如何实现用户自定义的键盘快捷键(在javascript/网络上),javascript,keyboard-shortcuts,Javascript,Keyboard Shortcuts,标题说明了其中的大部分。我想要一个javascript/html解决方案,了解如何创建持久的、用户可配置的键盘快捷键侦听器(如果您有偏好,还需要考虑如何真正持久化它们) 这看起来既简单又有点棘手:) 谢谢 如果您想让用户获得诸如“Control”+(…)之类的快捷方式,您只需捕获按下的键,因此检查是否在按下这些键的情况下按下了“Control”来执行操作 这是一个简单而糟糕的例子: var Pressed={ CTRL:false, Spacebar:false },Keyboard
谢谢 如果您想让用户获得诸如“Control”+(…)之类的快捷方式,您只需捕获按下的键,因此检查是否在按下这些键的情况下按下了“Control”来执行操作 这是一个简单而糟糕的例子:
var Pressed={
CTRL:false,
Spacebar:false
},Keyboard={ // an object containing Keyboard keys code
CTRL:17,
Spacebar:32
};
window.onkeydown=function(e){ // user started pressing an key (event)
var Key=(e.keyCode||e.which||e.key); // capture key pressed from event
if(Key==Keyboard.CTRL){ // CTRL is pressed
Pressed.CTRL=true
Pressed.Spacebar=false // CTRL has to be pressed before than Spacebar
}else if(Key==Keyboard.Spacebar){ // Spacebar is pressed
Pressed.Spacebar=true
}
if(Pressed.CTRL&&Pressed.Spacebar){ // Case CTRL+Spacebar are pressed
e.preventDefault(); // prevent Opera from quitting from the page
console.log("CTRL+Spacebar were pressed.")
}
},
window.onkeyup=function(e){ // event when an key is released
var Key=(e.keyCode||e.which||e.key); // capture key released from event
if(Key==Keyboard.CTRL){ // CTRL is released
Pressed.CTRL=false
}else if(Key==Keyboard.Spacebar){ // Spacebar is released
Pressed.Spacebar=false
}
};
要更新…您可以尝试以下方法: 出于演示目的,我刚刚记录了if
Alt
、Ctrl
或Shift
+“键”,如果键是在快捷方式中定义的,则打印特殊操作
否则为“正常操作”。我还禁用了输入的关键事件传播,但如果不需要,可以删除此部分
代码
(功能键盘记录器(){
var isCtrlPressed=false;
var isAltPressed=false;
var=false;
var shortcutKeys=[
13,//输入
32,//空间
37,//左箭头
38,//向上箭头
39,//右箭头
40,//向下箭头
90,//z
]
函数registerEvents(){
document.onkeydown=函数(事件){
var keyCode=event.keyCode?event.keyCode:event.which;
如果(keyCode>=16&&keyCode=0){
控制台日志(“特别行动”);
}否则{
控制台日志(“正常操作”);
}
}
}
document.onkeyup=函数(事件){
var keyCode=event.keyCode?event.keyCode:event.which;
如果(keyCode>=16&&keyCode,我会查看keypress
事件(可能在document
上),以便在整个页面上收听键盘事件,并且为了存储首选项,您可以使用localStorage(不用于敏感数据,但适用于键盘配置)或简单的cookie(如果设置不太复杂)。