我正在为我正在尝试编写的这个用户脚本的语法而苦苦挣扎,它基本上应该遵循这个逻辑:
IF (LeftArrowKeyIsPressed) THEN doSomething; ELSE IF (RightArrowKeyIsPressed) THEN doSomethingElse; ELSE IF(按下任何其他键) THEN doNothing;
有人可以帮助我了解构建按键检查的代码语法吗?假设onkeydown
正在使用一个事件。
我正在为我正在尝试编写的这个用户脚本的语法而苦苦挣扎,它基本上应该遵循这个逻辑:
IF (LeftArrowKeyIsPressed) THEN doSomething; ELSE IF (RightArrowKeyIsPressed) THEN doSomethingElse; ELSE IF(按下任何其他键) THEN doNothing;
有人可以帮助我了解构建按键检查的代码语法吗?假设onkeydown
正在使用一个事件。
添加一个事件侦听器,可能是到窗口,使用addEventListener
. 然后关闭该Event.which
值以执行您想要的操作。
这是代码。在 jsFiddle 上查看它的实际效果。:
/*--- Get or set the codes for the arrow keys.
Firefox gives us nice constants, Chrome does not.
*/
KeyEvent = (typeof KeyEvent === "object") ? KeyEvent : [];
const LEFT_KEY = KeyEvent.DOM_VK_LEFT || 37;
const RIGHT_KEY = KeyEvent.DOM_VK_RIGHT || 39;
window.addEventListener ("keydown", keyboardHandler, false);
function keyboardHandler (zEvent) {
var bBlockDefaultAction = false;
//--- Assume we want only the plain keys, not the modified versions.
if (zEvent.altKey || zEvent.ctrlKey || zEvent.shiftKey) {
//-- Do nothing (most user-friendly option, in most cases).
}
else {
if (zEvent.which == LEFT_KEY) {
//DO LEFT KEY ACTION HERE.
bBlockDefaultAction = true;
}
else if (zEvent.which == RIGHT_KEY) {
//DO RIGHT KEY ACTION HERE.
bBlockDefaultAction = true;
}
}
if (bBlockDefaultAction) {
zEvent.preventDefault ();
zEvent.stopPropagation ();
}
}
此代码适用于用户脚本适用的浏览器(不是 IE)。jQuery 版本是相同的,只是将addEventListener
行更改为:
$(window).keydown (keyboardHandler);