Keypress [Tab, Shift, 上/下/左/右箭头] 和 Firefox

3
火狐浏览器在按下 tab, shift, up/down/left/right arrow 键时会触发 keypress 回调函数,但是 Chrome,Safari 和 IE 则不会触发。
请参考此 CodePen
它不仅在 keypress 上触发回调函数,而且在按下 tab, shift, up/down/left/right arrow 键时将 keyCode 传递为 0我可以
var charCode = (typeof e.which === 'number') ? e.which : e.keyCode;
if (charCode === 0) return;

但我在想,如果这是Firefox中的一个bug,那么为什么Firefox和其他浏览器之间存在不一致性呢?
1个回答

2

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

如果用户代理支持,当按键按下时,只有该按键通常产生字符值时,才会触发此事件。根据最后一部分的说法,我认为Firefox处理不正确-制表符、Shift和箭头键不会“产生字符值”。
(制表符即使在其他环境中不可见,但仍然是一个字符,因此在Web页面中它不会产生“字符值”,而只是跳到下一个可聚焦元素;因此它也必须被排除在触发事件之外。)

看起来这是Firefox的一个bug。 - Sarbbottam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接