当 tab、shift、up/down/left/right arrow
键被按下时,Firefox 会触发 keypress
回调函数,而 Chrome、Safari、IE 则不会。
请引用this CodePen .
它不仅在keypress
上触发回调函数,而且在tab、shift、up 时将
键被按下。keyCode
作为0
传递/down/left/right arrow
我可以
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-type-keypress :
If supported by a user agent, this event must be dispatched when a key is pressed down, if and only if that key normally produces a character value.
最后一部分我要说的是,Firefox 处理这个错误 - tab、shift 和箭头键不会“产生字符值”。
(制表符会产生一个“字符值” - 即使不是“可见”,制表符字符仍然是一个字符 - 在其他环境中,但在浏览器的网页中它不会,而只是跳到下一个可聚焦元素;因此它也必须被排除在触发事件之外。)
关于javascript - 按键 [tab、shift、上/下/左/右箭头] 和 firefox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36341175/