如何Cmd通过 JavaScript获取 Mac 的密钥?
如何通过 JavaScript 捕获 Mac 的命令键?
IT技术
javascript
dom-events
2021-02-04 16:15:58
6个回答
编辑:截至2019年,e.metaKey
是支持所有主流浏览器按照该MDN。
请注意,在 Windows 上,虽然⊞ Windows键被认为是“元”键,但浏览器不会捕获它。
这仅适用于 MacOS/键盘上的命令键。
不同于Shift/ Alt/Ctrl时,Cmd(“苹果”)键不被认为是修饰键,相反,你应该听上keydown
/keyup
当按下一个键,然后郁闷基于和记录event.keyCode
。
不幸的是,这些关键代码取决于浏览器:
- 火狐:
224
- 歌剧:
17
- WebKit 浏览器(Safari/Chrome):(
91
左命令)或93
(右命令)
您可能有兴趣阅读JavaScript Madness: Keyboard Events 一文,我从中学到了这些知识。
event.metaKey
如果您正在处理keydown
事件,还可以查看事件的属性。非常适合我!你可以在这里试试。
我发现如果与另一个键一起按下,您可以在最新版本的 Safari (7.0: 9537.71) 中检测到命令键。例如,如果您想检测 ⌘+x:,您可以检测 x 键并检查 event.metaKey 是否设置为 true。例如:
var key = event.keyCode || event.charCode || 0;
console.log(key, event.metaKey);
当单独按下 x 时,这将输出120, false
. 按 ⌘+x 时,会输出120, true
这似乎只适用于 Safari - 而不适用于 Chrome
根据 Ilya 的数据,我写了一个 Vanilla JS 库来支持 Mac 上的修饰键:https : //github.com/MichaelZelensky/jsLibraries/blob/master/macKeys.js
就这样使用它,例如:
document.onclick = function (event) {
if (event.shiftKey || macKeys.shiftKey) {
//do something interesting
}
}
在 Mac 上的 Chrome、Safari、Firefox、Opera 上测试。请检查它是否适合您。
对于使用 jQuery 的人,有一个很好的插件来处理关键事件:
为了捕获⌘+S和Ctrl+S我正在使用这个:
$(window).bind('keydown.ctrl_s keydown.meta_s', function(event) {
event.preventDefault();
// Do something here
});