2016-03-31 227 views
2

按下tab, shift, up/down/left/right arrow鍵時,Firefox會觸發keypress回調函數,但Chrome,Safari,IE不會。按鍵[tab,shift,向上/向下/向左/向右箭頭]和firefox

請參考this CodePen

它不僅觸發上keypress回撥功能,而且還通過了keyCode0當按下按鍵tab, shift, up/down/left/right arrow

我可以

var charCode = (typeof e.which === 'number') ? e.which : e.keyCode; 
if (charCode === 0) return; 

但想知道,如果它在Firefox中的錯誤,而爲什麼會出現Firefox和其他瀏覽器之間的不一致?

回答

2

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

如果用戶代理支持,當一個鍵被按下這個事件必須被布控,當且僅當該鍵通常產生一個字符值。

通過最後一部分我會說,Firefox正在處理這個錯誤 - 製表符,shift和箭頭鍵不會「產生字符值」。

(製表符會生成一個「字符值」 - 即使不是「可見」,製表符仍然是一個字符 - 在其他環境中,但在瀏覽器中的網頁中,它不會跳轉到下一個可以重點考慮的因素;所以它也必須從觸發事件中排除)

+0

看起來像它在Firefox中的一個錯誤 – sarbbottam

相關問題