JavaScript keyCode nem ugyan azt az értéket adja vissze Chrome-ban és FF-ban

 ( bodnarj | 2017. szeptember 13., szerda - 9:37 )

Sziasztok.

Van nekem egy kis JavaScript kódom ami a vonalkód olvasó által küldött karakter sorozatot próbálná elkapni. Persze, hogy ne legyen egyszerű az élet 0 helyett ö betűket küldözget.
És az a gond hogy a Chrome-ban szépen 192-es kódot kapok vissza FireFoxban meg 0-ás kódot.

FireFox:
DEBUG: which: 0; keyCode: 0, charCode: 0

Chrome
DEBUG: which: 192; keyCode: 192, charCode: 0

Mi lehet itt a gond?

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Állítsd angolra a billentyűzetet.
Rengeteget szívtunk vele mi is, ez lett a legkönnyebb workaround.

Nézd meg az esemény többi paraméterét.

Firefox ESR-ben úgy látom, hogy van benne még két érdekes tulajdonság. Van a "code", ami "Digit0" (tehát angol kiosztás szerint nézi). És van a "key", ami simán a lenyomott gomb stringként, "ö". Chrome-ban megvannak ugyanezek.

A "key" mind a kettőben ugyan úgy működik. Tehát Chrome-ban és FF-ban is 'ö' betűt ad vissza. Ez talán jó lehet és megoldja a problémát.
Kérdés hogy ha jön ki újabb verzió valamelyik böngészőből mennyire borul meg...

Milyen eventre? Keypress egy mágikus svábbogár, esetleg keydown, keyup jó lehet.
--
HUP Firefox extension | Hupper hibajelentés

Keydown eventre.

Miért is kéne neked a keyCode? A keyCode az bizony implementáció függő.
És már nem is része a standardnak.
https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode
"read-only property represents a system and implementation dependent numerical code identifying the unmodified value of the pressed key. "
Hogy miért ne használd: lásd a kiemelést.

Hogy mit használj:
https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key
Ez azt a nyomtatható Unicode karaktert adja vissza, amit lenyomtak (meg a vezérlőkaraktereket is). Nem billentyűkód, hanem karakter.

Régebbi, nem szabványos megoldás:
https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/charCode