按键[tab,shift,上/下/左/右箭头]和firefox

时间:2016-03-31 18:40:12

标签: javascript firefox dom keypress

Firefox会在按下keypress键时触发tab, shift, up/down/left/right arrow回调功能,但Chrome,Safari,IE不会。

请参阅this CodePen

不仅会触发keypress上的回叫功能,还会在按下keyCode键时将0作为tab, shift, up/down/left/right arrow传递。

我可以

var charCode = (typeof e.which === 'number') ? e.which : e.keyCode;
if (charCode === 0) return;

但是想知道,如果它是Firefox中的一个错误,那么为什么Firefox和其他浏览器之间存在不一致?

1 个答案:

答案 0 :(得分:2)

https://www.w3.org/TR/DOM-Level-3-Events/#event-type-keypress

  

如果用户代理支持,则必须在按下某个键时调度此事件,当且仅当该键通常产生字符值时才会发送。

通过最后一部分我会说,Firefox正在处理这个错误 - 制表符,shift键和箭头键不会“产生字符值。”

(制表符会产生“字符值” - 即使不是“可见”,制表符仍然是一个字符 - 在其他环境中,但在浏览器的网页中却没有,但只是跳到下一个可聚焦元素;因此必须将其排除在触发事件之外。)