是否可以通过用户脚本Jquery识别所有键码事件
我正在使用Tampermonkey构建一个用户脚本来识别键码事件,当键被触发时它将执行一个function。
例如。 我想按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和其他键。
我有什么遗漏或不能处理所有关键事件吗?
注意:我一直在使用此链接获取我的密钥代码并在我的脚本中使用它们。
不会触发控制键的按键。 根据Mozilla文档的说明:
keypress
产生字符值的键时会触发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"); } });
要确定左右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