Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 设置操作系统特定的键绑定-Mac上的Cmd和其他所有操作上的Ctrl_Javascript_Macos_Keyboard Shortcuts_Keyboard Events - Fatal编程技术网

Javascript 设置操作系统特定的键绑定-Mac上的Cmd和其他所有操作上的Ctrl

Javascript 设置操作系统特定的键绑定-Mac上的Cmd和其他所有操作上的Ctrl,javascript,macos,keyboard-shortcuts,keyboard-events,Javascript,Macos,Keyboard Shortcuts,Keyboard Events,在配置(文本编辑器)时,可以使用特定于操作系统的键绑定,如{win:“Ctrl-Esc”,mac:“Cmd-Esc”}。这表明您可以在JavaScript中使用特定于操作系统的键绑定,但是如何实现呢 我想创建在OS X上使用Cmd和在其他系统上使用Ctrl的快捷键。不幸的是,目前没有JavaScript API来检测主机操作系统是否使用Ctrl键或Cmd键作为键盘快捷键。确定这一点的唯一方法是使用平台嗅探 这通常是通过使用属性来完成的。事实上,你提到的图书馆,Ace编辑器。此属性还有一个优点,即

在配置(文本编辑器)时,可以使用特定于操作系统的键绑定,如
{win:“Ctrl-Esc”,mac:“Cmd-Esc”}
。这表明您可以在JavaScript中使用特定于操作系统的键绑定,但是如何实现呢


我想创建在OS X上使用Cmd和在其他系统上使用Ctrl的快捷键。

不幸的是,目前没有JavaScript API来检测主机操作系统是否使用Ctrl键或Cmd键作为键盘快捷键。确定这一点的唯一方法是使用平台嗅探

这通常是通过使用属性来完成的。事实上,你提到的图书馆,Ace编辑器。此属性还有一个优点,即如果更改用户代理字符串(至少在正常情况下不会更改),它不会更改

在OS X上,
navigator.platform
返回类似于
MacProcessor
或基于Intel的Mac上的
MacIntel
的字符串。有了这些知识,我们可以创建一个匹配的正则表达式。像下面这样的东西应该是安全的,并且是未来的证明

/mac/i.test(navigator.platform);
现在我们只需要使用这个语句的布尔返回值,来确定我们的快捷键应该是,还是

工作示例:
var isMac=/mac/i.test(navigator.platform);
window.addEventListener('keydown',函数(e){
if(e.keyCode===67&&(isMac?e.metaKey:e.ctrlKey)){
document.getElementById('textarea')。值+='Thank'+(isMac?'Mac':'Non Mac')+'!\n';
}
});
在Mac上按Cmd+C,或在其他所有设备上按Ctrl+C


不幸的是,目前还没有JavaScript API来检测主机操作系统是否使用Ctrl键或Cmd键作为键盘快捷键。确定这一点的唯一方法是使用平台嗅探

这通常是通过使用属性来完成的。事实上,你提到的图书馆,Ace编辑器。此属性还有一个优点,即如果更改用户代理字符串(至少在正常情况下不会更改),它不会更改

在OS X上,
navigator.platform
返回类似于
MacProcessor
或基于Intel的Mac上的
MacIntel
的字符串。有了这些知识,我们可以创建一个匹配的正则表达式。像下面这样的东西应该是安全的,并且是未来的证明

/mac/i.test(navigator.platform);
现在我们只需要使用这个语句的布尔返回值,来确定我们的快捷键应该是,还是

工作示例:
var isMac=/mac/i.test(navigator.platform);
window.addEventListener('keydown',函数(e){
if(e.keyCode===67&&(isMac?e.metaKey:e.ctrlKey)){
document.getElementById('textarea')。值+='Thank'+(isMac?'Mac':'Non Mac')+'!\n';
}
});
在Mac上按Cmd+C,或在其他所有设备上按Ctrl+C


我没有投反对票,但直接从关闭/标记原因来看:“要求我们推荐或查找书籍、工具、软件库、教程或其他非现场资源的问题因堆栈溢出而脱离主题。”关闭投票人:请仔细阅读问题!他不是在征求建议。他更喜欢一个简单的解决方案,但补充说,建议图书馆的评论仍然会有帮助。@S.L.Barth-那么最好删除关于建议图书馆的评论的宣传语。否则,这就像说,“我知道建议是离题的,所以不要把它们作为答案,只是作为评论,一切都很酷。”这并不是胡扯。作为一个理由,推荐是离题的,试图规避这一点只会让人大吃一惊,并导致你在这里看到的选票。@littlebbbytables我不认为他试图规避规则。但我同意,最好不写那个宣传语。卡尔·史密斯,我可以把它删掉,但我更愿意把决定权留给你。如果是我的问题,我会删除最后一句。完成。谢谢你的反馈。我想这还不清楚。我没有投反对票,但直接从关闭/标志原因来看:“要求我们推荐或查找书籍、工具、软件库、教程或其他非现场资源的问题因堆栈溢出而与主题无关。”关闭投票人:请仔细阅读该问题!他不是在征求建议。他更喜欢一个简单的解决方案,但补充说,建议图书馆的评论仍然会有帮助。@S.L.Barth-那么最好删除关于建议图书馆的评论的宣传语。否则,这就像说,“我知道建议是离题的,所以不要把它们作为答案,只是作为评论,一切都很酷。”这并不是胡扯。作为一个理由,推荐是离题的,试图规避这一点只会让人大吃一惊,并导致你在这里看到的选票。@littlebbbytables我不认为他试图规避规则。但我同意,最好不写那个宣传语。卡尔·史密斯,我可以把它删掉,但我更愿意把决定权留给你。如果是我的问题,我会删除最后一句。完成。谢谢你的反馈。我想这还不清楚。看起来不再反对(没有提及您提供的链接)看起来不再反对(没有提及您提供的链接)