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

keypress [tab, shift, up/down/left/right arrow] and firefox

本文关键字:firefox 向下 tab shift 向上 按键 向左      更新时间:2023-10-24

Firefox在按下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中的一个错误,为什么Firefox和其他浏览器之间存在不一致

https://www.w3.org/TR/DOM-Level-3-Events/#event-类型按键:

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

在最后一部分,我想说的是,Firefox处理了这个错误的问题——tab、shift和箭头键不能"产生字符值"

(选项卡会产生一个"字符值"-即使不"可见",选项卡字符仍然是一个字符-在其他环境中,但在浏览器中的网页中它不会,只是跳到下一个可聚焦元素;因此它也必须被排除在触发事件之外。)