我试图找出用户何时使用Javascript在HTML页面中按下“control”键。
在下面的代码中,“CTRL UP”将按预期显示,但只有当我 按另一个键时,才会显示“CTRL DOWN”,例如“转移”。
<html>
<head>
<script type="text/javascript">
window.addEventListener("keyup", function(event) {
// Bind to both command (for Mac) and control (for Win/Linux)
if (event.ctrlKey) {
console.log("CTRL UP");
}
}, false);
window.addEventListener("keydown", function(event) {
// Bind to both command (for Mac) and control (for Win/Linux)
if (event.ctrlKey) {
console.log("CTRL DOWN");
}
}, false);
</script>
</head>
<body>
Ctrl Demo
</body>
</html>
有没有办法让“CTRL DOWN”键事件按预期工作,当按下ctrl并按住它时?
注意:我正在尝试将其用于Google Chrome扩展程序,因此使用Chrome特定的API或技巧来完成此工作完全没问题。我在Ubuntu上使用Google Chrome 15.0.874.83测试版。
答案 0 :(得分:19)
您的代码适用于我,以下是jQuery。 (镀铬)
$(window).keydown(function(e){
if (e.ctrlKey)
console.log('Control Down');
});
使用警报有点尴尬,因为它会阻止进程,并且您不会看到对话框启动时发生的任何键状态更改。我建议使用console.info/log/debug
答案 1 :(得分:9)
如果您只想检测自己按下的 Ctrl 键,以下内容将起作用(尽管请记住IE&lt; 9中不支持addEventListener
,其中您需要使用attachEvent
或onkeydown
代替:
window.addEventListener("keydown", function(event) {
// Bind to both command (for Mac) and control (for Win/Linux)
if (event.keyCode == 17) {
alert("Ctrl");
}
}, false);