如何在没有keydown事件的情况下检测CTRL和SHIFT键?

10

我一直在想是否可以检测CTRLSHIFT键是否被按下,而不使用keydown事件。

原因是我正在用JavaScript创建某种类型的网格查看器,并实现通过按住CTRLSHIFT键选择不同项,就像大多数常见的查看器、编辑器等功能一样。

问题是当焦点不在页面上时。例如,我要将页面添加到书签中。然后我按住CTRLSHIFT并单击该项,但它会正常运行,就好像没有触发keydown事件一样。

有什么方法可以避免这个问题吗?也许没有,但对于将其视为我的明显错误的客户来说可能会产生困惑。


如果他们把它视为你的错误,那是他们的问题。如果他们不想专注于你的页面,就不能获得你的功能。 - Ian
2
您也可以在 onclick 处理程序中检测这些键... - Teemu
1
@Teemu 很好的观点。我不确定为什么要使用 keydown 事件。所有内容都应在点击点进行检查。 - Ian
1个回答

18

当鼠标点击时,根本不需要任何键盘事件来检测 ShiftCtrlAltMDN

事件对象包含以下信息:

element.addEventListener('click', function (e) {
    console.log(e.shiftKey);
    console.log(e.ctrlKey);
    console.log(e.altKey);
});

jsFiddle上的演示

这些属性也可以在键盘事件处理程序中读取。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接