【问题标题】:keypress [tab, shift, up/down/left/right arrow] and firefox按键 [tab, shift, up/down/left/right arrow] 和 firefox
【发布时间】:2016-07-20 08:46:40
【问题描述】:

Firefox 在按下tab, shift, up/down/left/right arrow 键时会触发keypress 回调函数,而Chrome、Safari、IE 则不会。

请参考this 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 和其他浏览器之间存在不一致?

【问题讨论】:

    标签: javascript firefox dom keypress


    【解决方案1】:

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

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

    我想说的是,Firefox 正在处理这个错误 - tab、shift 和箭头键不会“产生字符值”。

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

    【讨论】:

    • 看起来是Firefox中的一个错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-29
    • 1970-01-01
    相关资源
    最近更新 更多