我正在使用 Tampermonkey 构建可识别键代码事件的用户脚本,并且在触发键时它将起作用。
例如我想按 Enter ,它的keycode
是13,所以我使用了此代码
$(document).keypress(function(event){
var which = (event.which ? event.which : event.keyCode);
if(which == '13'){
alert("You Pressed Enter key");
}
else if(which == '17'){
alert("You Pressed Control key");
}
});
该代码与 Enter 和 1 一起正常工作,但与 Ctrl 或 Shift 和其他键。
有什么我想念的东西吗?或者不是所有的关键事件都可以处理吗?
注意::我一直在使用this link来获取我的密钥代码并在脚本中使用它们。
答案 0 :(得分:4)
keypress
。根据Mozilla文档上的描述:
按下产生字符值的键时,将触发
keypress
事件。产生字符值的键的示例是字母,数字和标点键。不会产生字符值的键示例包括修饰键,例如 Alt , Shift , Ctrl 或 Meta 。
一种解决方法是听keydown
或keyup
事件:
$(document).keydown(function(event) {
var which = (event.which ? event.which : event.keyCode);
if (which == '13') {
alert("You Pressed Enter key");
} else if (which == '17') {
alert("You Pressed Control key");
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
答案 1 :(得分:1)
还要确定左右键 ctrl , alt 和 shift :
$(document).keyup(function (e) {
if (e.keyCode == 16) {
if (e.originalEvent.location == 1)
alert('Left SHIFT pressed.');
else
alert('Right SHIFT pressed.');
} else if (e.keyCode == 17) {
if (e.originalEvent.location == 1)
alert('Left CTRL pressed.');
else
alert('Right CTRL pressed.');
} else if (e.keyCode == 18) {
if (e.originalEvent.location == 1)
alert('Left ALT pressed.');
else
alert('Right ALT pressed.');
e.preventDefault();
}
});
您必须包含jquery
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>