我正在尝试使用Firebug调试功能,因为JavaScript getModifierState() 方法似乎无法正常工作。这是函数的开头:

function kbdEq () {
  $(document).on ('keypress', function (e) {
    e.preventDefault();
    debugger;
    var x = e.charCode || e.keyCode;
// etc.

跳入Firebug很简单,但是尝试进行测试
e.getModifierState('Alt')

(或任何其他键盘事件作为参数,带或不带引号)会导致Firebug发出此消息:



我正在使用Firefox 44.0.2。

我(大概)在这里犯了什么错误?

最佳答案

使用jQuery时,请注意event parameter ( e in your case) is a jQuery specific object包装了实际的事件对象。

要访问原始事件,它具有originalEvent属性。因此,要访问修饰符状态,您必须编写以下代码:

e.originalEvent.getModifierState("Alt");

请注意,jQuery事件对象具有一些更简单的方法来检查是否按下了Alt,Ctrl,Shift或Meta键。这可以分别通过e.altKeye.ctrlKeye.shiftKeye.metaKey完成。

07-24 22:04