javascript - 按键 [tab、shift、上/下/左/右箭头] 和 firefox

标签 javascript firefox dom keypress

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/

相关文章:

javascript - 从 Javascript 中的回调函数返回

javascript - 如何提取表格第二列中的值

css - 带有文本转换的跨度中的额外空间

javascript - 实时显示选定 DOM 元素的 JQuery 工具

javascript - jquery函数无法捕获动态生成的id

javascript - 如何缩短这个 JavaScript if 语句?

javascript - 如何将 Apple 登录添加到 firebase 预构建 ui?

PHP DOM 解析和 mysql 错误

javascript - 如何调整/更改滚动条宽度

javascript - ajax 在 google chrome 中发送两个变量,但在 mozilla firefox 中不发送