getModifierState()作为错误返回

时间:2016-02-20 10:49:09

标签: javascript jquery runtime-error

我正在尝试使用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的此消息:

  

e.getModifierState不是函数

我使用的是Firefox 44.0.2。

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

1 个答案:

答案 0 :(得分:5)

在使用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来完成。