键盘未触发事件时出错

时间:2018-05-30 07:46:12

标签: javascript

按下转义键时,我在javascript中有一些说明。它的工作正常,直到它不是由键盘触发的事件。

这是我的代码:

Fileinput.prototype.clear = function(e) {
    if (e) e.preventDefault();
    if(e.keyCode == 27) return;
}

当事件不是键盘触发器时出现的错误是:无法读取属性' keycode'未定义的。

尝试if (e==undefined)if(e.istriggered)并遇到同样的问题。

3 个答案:

答案 0 :(得分:0)

然后你的解决方案是简单的:

Fileinput.prototype.clear = function(e) {
if (e) {
    e.preventDefault();
    if(e.keyCode == 27) return;
}

您已经知道错误发生在keyCode上,而不是在preventDefault()上,因为undefined也没有preventDefault函数。

答案 1 :(得分:0)

几乎你的答案是正确的,只需改变如下

Fileinput.prototype.clear = function(e) {
    if (e) {
      e.preventDefault();
      return !e.keyCode === 27
    }
}

答案 2 :(得分:0)

<强>键代码 如果可能,你应该避免使用它;它已经被弃用了一段时间。 参考:MDN

您可以按照此代码段进行操作。

  if (e.key !== undefined) {
    // Handle the event with KeyboardEvent.key and set handled true.
  } else if (e.keyIdentifier !== undefined) {
    // Handle the event with KeyboardEvent.keyIdentifier and set handled true.
  } else if (e.keyCode !== undefined) {
    // Handle the event with KeyboardEvent.keyCode and set handled true.
  }

因为,这完全取决于浏览器。