我在Javascript中有一个事件监听器,我可以判断一个关键事件是否为Ctrl (e.keyCode == 17)
,但是我怎么知道这个Ctrl来自右边的还是左边的?
答案 0 :(得分:6)
快速说明:我不会将架构/设计建立在正确控制键的可用性基础上 - 许多笔记本电脑键盘可能没有两个控制键。
答案 1 :(得分:3)
我认为keyCode不同。
您可以使用e.ctrlKey
更好地确定是否按下了控制键。
似乎是Flash can not tell which one is pressed(无论是那个还是编码不正确)。
答案 2 :(得分:1)
MSIE在大多数活动中提供ctrlLeft
属性。属性值为:
true
false
。您可以合并event.ctrlKey
和event.ctrlLeft
以确定是否按下了右Ctrl键:
if (event.ctrlKey) {
if (event.ctrlLeft) {
// left Ctrl key pressed
} else {
// right Ctrl key pressed
}
} else {
// no Ctrl key pressed
}
请注意,ctrlLeft
中的keyup
属性未定义,因为不再按下Ctrl键。
在MSIE7和MSIE9下测试。在Firefox下无效。
有关详细信息,请参阅http://help.dottoro.com/ljqlvhuf.php。
答案 3 :(得分:1)
如果您追踪它,您会发现两者都使用相同的密钥(17)..我认为不可能区分
答案 4 :(得分:1)
我不知道在问到这个问题时它是否可用,但你可以区分左右控制,以及alt和shift。您现在可以使用KeyboardEvent.DOM_KEY_LOCATION_ *属性进行区分。
请参阅Can javascript tell the difference between left and right shift key?
请注意,我发现Chrome似乎在实施方面存在缺陷。见How can I distinguish left- and right- shift, ctrl, and alt keys onkeyup in Chrome with Javascript
答案 5 :(得分:1)
左ctrl键有event.location
属性,右边一个2有1,你可以查看canIuse上的浏览器支持
if (e.which == 17) {
if (event.location == 1) {
// left ctrl key
} else if (event.location == 2) {
// right ctrl key
}
}