我正在为一个网页应用程序编写键盘快捷键,并需要检查按键是否触发快捷方式,还是用户正在输入而不应触发快捷方式。
例如,常见的模式是使用/或s键打开全局搜索栏。显然,如果用户正在输入到另一个输入框,则不应该打开搜索栏。
理想的逻辑大致如下: 按键按下时,检查当前聚焦的元素。如果该元素接受键盘输入(即可键入),则不执行任何操作。如果该元素不能接受键盘输入,则运行快捷方式。
请注意,仅检查可聚焦性是不够的,因为链接和按钮是可聚焦的,但并不接受键盘输入(在此处我的意思是这种输入方式)。
以下是我目前拥有的内容:
function acceptsKeyboardInput(element) {
return (
element.tagName === "INPUT" ||
element.tagName === "TEXTAREA" ||
element.isContentEditable
);
}
这种方法是否涵盖了所有情况,还是有更好的方法来判断一个HTML元素是否接受键盘输入?
.isContentEditable
,以查看您已赋予contenteditable
属性的任何其他元素。 - icecub