IE 10及更早版本 - 如何识别ctrl left vs right?

时间:2016-12-19 14:13:00

标签: internet-explorer keyboard-events

IE9 / 10触发的keyUp事件中是否有任何信息可以知道左侧或右侧的ctrl键是否已被释放?

开发环境:浏览器"游戏"用户说是(ctrl-right)和no(ctrl-left),在用户通过计算最后释放的密钥来按两个键的情况下优雅地处理情况。

到目前为止的结果:

  • e.browserEvent.ctrlLeft属性在keyUp上总是假的。
  • e.ctrlKey,e.browserEvent.ctrlKey在keyUp上似乎总是假的 - 对于两个ctrl键。 (惊人)
  • e.browserEvent.keyCode左右为17。
  • e.originalEvent未定义。

在这种情况下,我无法看到如何区分左右。感谢任何回复。

修改

令人困惑的是,在keyDown事件中,直到今天,我相信它们允许区分ctrlLeft和ctrlRight。 e.browserEvent.ctrlLeft属性的值为' true'当我按左ctrl键时,' false'当我按右ctrl键时。

但是:随着快速连续的按键,情况会恶化。 当我按下1. ctrlRight,按住它,然后快速2. ctrlLeft,事情看起来很好:我得到两个keyDown事件。在第一个中,e.browserEvent.ctrlLeft为false,在第二个中,e.browserEvent.ctrlLeft为true。

当我按下1. ctrlLeft时,按住它,然后快速2.ctrlRight,而不是那么多:我得到两个keyDown事件。在第一个,e.browserEvent.ctrlLeft是真的---在第二个,e.browserEvent.ctrlLeft也是如此。

MS的文档说明e.browserEvent.ctrlLeft是要利用的资源,以便知道按下了哪个ctrl键。

他们提供了一个交互式演示实现。然而,即使在这个演示中,错误的行为也是显而易见的,在第一个按键顺序上产生一个状态,在第二个顺序上产生另一个状态。

https://msdn.microsoft.com/de-de/library/windows/desktop/ms533700

我认为我可以安全地断定IE< 11运行的任何客户端代码都无法可靠地识别哪个ctrl键导致任何给定的keyUp事件,当我们退出两个ctrl键被按下的情况时同时进行。

0 个答案:

没有答案