Ily*_*nov 221
与Shift/ Alt/ 不同Ctrl,Cmd("Apple")键不被视为修饰键 - 相反,您应该按下e.metaKey
/ keydown
并在按下键时记录,然后按下keyup
.
不幸的是,这些密钥代码依赖于浏览器:
event.keyCode
224
17
左命令)或91
(右命令)您可能有兴趣阅读文章JavaScript疯狂:键盘事件,我从中学习了这些知识.
cry*_*pay 13
我发现如果与另一个键一起按下,你可以在最新版本的Safari(7.0:9537.71)中检测到命令键.例如,如果要检测⌘+ x:,则可以检测x键并检查event.metaKey是否设置为true.例如:
var key = event.keyCode || event.charCode || 0;
console.log(key, event.metaKey);
Run Code Online (Sandbox Code Playgroud)
当按下它自己的x时,这将输出120, false
.按⌘+ x时,将输出120, true
这似乎只适用于Safari - 而不是Chrome
Mic*_*sky 11
基于Ilya的数据,我在Mac上编写了一个支持修改键的Vanilla JS库:https://github.com/MichaelZelensky/jsLibraries/blob/master/macKeys.js
只需像这样使用它,例如:
document.onclick = function (event) {
if (event.shiftKey || macKeys.shiftKey) {
//do something interesting
}
}
Run Code Online (Sandbox Code Playgroud)
在Chrome,Safari,Firefox,Mac上的Opera上测试过.请检查它是否适合您.
keyCode
现已which
弃用,因此建议避免使用此处的答案。
现在执行此操作的一种方法是使用DOM和事件key
附带的事件参数的属性。下面是如何执行此操作的一个简单示例:keyup
keypress
document.onkeypress = (event) => {
if (event.key === 'Meta') {
console.log("Mac or Windows key was pressed!");
} else {
console.log("Another key was pressed")
}
}
Run Code Online (Sandbox Code Playgroud)
这将在 Mac 上按下按键时触发cmd(请参阅 MDN 文档上的元)。这里唯一需要注意的是,对于支持它的用户键盘/操作系统,它也会在按下 Windows 按键时触发。
如果您需要更详细地了解按下了哪个元键,您可以使用code
事件属性,该属性可以是MetaLeft
或MetaRight
cmd取决于按下了哪个物理元键 ( )。
对于使用jQuery的人来说,有一个很好的插件来处理关键事件:
为了捕获⌘+ S和Ctrl+ S我正在使用这个:
$(window).bind('keydown.ctrl_s keydown.meta_s', function(event) {
event.preventDefault();
// Do something here
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
99568 次 |
最近记录: |