2016-03-31 195 views
2

按下tab, shift, up/down/left/right arrow键时,Firefox会触发keypress回调函数,但Chrome,Safari,IE不会。按键[tab,shift,向上/向下/向左/向右箭头]和firefox

请参考this CodePen

它不仅触发上keypress回拨功能,而且还通过了keyCode0当按下按键tab, shift, up/down/left/right arrow

我可以

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

但想知道,如果它在Firefox中的错误,而为什么会出现Firefox和其他浏览器之间的不一致?

回答

2

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

如果用户代理支持,当一个键被按下这个事件必须被布控,当且仅当该键通常产生一个字符值。

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

(制表符会生成一个“字符值” - 即使不是“可见”,制表符仍然是一个字符 - 在其他环境中,但在浏览器中的网页中,它不会跳转到下一个可以重点考虑的因素;所以它也必须从触发事件中排除)

+0

看起来像它在Firefox中的一个错误 – sarbbottam

相关问题