用于命令键的jQuery键码
我已阅读jQuery事件按键:哪个键被按下? 和我怎样才能检查是否按键过程中点击事件与jQuery的?
然而,我的问题是,如果你可以得到所有浏览器相同的关键事件? 目前我知道Firefox提供了命令button(Mac)的代码224,而Chrome和Safari给它的价值91.是最好的方法来简单地检查用户正在使用的浏览器,并根据按键或有办法这样我可以在所有浏览器中获得1个关键代码? 注意我得到的价值与:
var code = (evt.keyCode ? evt.keyCode : evt.which);
如果可能的话,我很乐意不要使用插件,因为我只需要知道按下的命令 / ctrl (windows系统)键。
jQuery已经处理了。 要检查控制是否被按下,你应该使用:
$(window).keydown(function (e){ if (e.ctrlKey) alert("control"); });
修饰键的列表:
e.ctrlKey e.altKey e.shiftKey
而且如同fudgey所言:
e.metaKey
可能在MAC上工作。 还有其他一些方法 。
如果您对按下Command键的确切时间不感兴趣,只要按下另一个键时是否按下,则可以使用事件的metaKey
属性。
否则,对于keydown
和keyup
事件,您需要的属性是所有浏览器中的keyCode
。 不幸的是, Command键在所有浏览器中都没有相同的键码,而左边和右边的Command在WebKit(分别为91和93)中有不同的值。 我看不到一个简单的方法来检测这些键没有某种浏览器嗅探,但可能有一个。 which
属性绝对不会帮助你。
欲了解更多信息, http://unixpapa.com/js/key.html全面覆盖所有主stream浏览器的关键事件处理。;
在这里你可以试试这个可运行的代码片段:
$(window).on('keypress', function(event) { $("body").append($("<p>").text( "ctrlKey " + event.ctrlKey + "; altKey " + event.altKey + "; metaKey " + event.metaKey + "; shiftKey " + event.shiftKey + "; isCommandPressed " + isCommandPressed(event) )); }); function isCommandPressed(event) { return event.metaKey && ! event.ctrlKey; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <p>Focus on this select control and try pressing keys:</p> <p><select><option>Test</option></select></p>