2013-08-11 4 views
5

this live demo(jQueryのサイトから)をご覧ください。 Firefoxで-(ダッシュ)をクリックjQueryのイベント。なぜFirefoxとChromeで異なる結果になるのですか?

189を生成Chromeで同じことをやっている間event.whichは、173であると述べています。

This jQuery pageは、クロスブラウザの整合性のためにevent.whichを正規化する必要があると言います。しかし、これは真実ではないように見えます。

なぜこの不一致がありますか?

答えて

4

このjQueryページには、ブラウザの一貫性のために正規化する必要があるイベントが記載されています。しかし、これは真実ではないように見えます。

jQueryのプロパティ(例えば、常にwhichはなく、ブラウザによってwhich又はkeyCode)ではなく、劇的に、より複雑であろう性のを、正規化します。

​​/keyupから取得するキーの値は、ブラウザだけでなくキーボードレイアウトによっても異なります。 Jan WolterによるJavaScript Madness: Keyboard Eventsページには、たくさんの細部の詳細があります。他のものの中で、あなたはそのページで、Firefoxがあなたに109、IE(そして明らかにChrome)が189、Operaが明らかに45と一緒に使っていたことが分かります(しかし、私のテストではLinux 109と一緒に行く)。 (-のような)印刷可能なキーストロークについては

、あなたはあなたの結果文字を与えるkeypressイベント、との方がいいでしょう。

+0

説明をいただきありがとうございます。 –

+0

jQuery 1.11では、少なくともFireFoxの下では、jQueryが 'event.which'プロパティを完全に正規化しているようには見えません。次のようにhttp://jsbin.com/sozoqiro/1/edit?html,console 'event.which'と' event.keyCode'はどちらのキーを押すかによって値が異なります。印刷文字を押すと「e.which」と表示され、Tabキーは「e.keyCode」に、Enterキーは「e.which」と「e.keyCode」の両方に同じ値を入力します。 FireFoxでは、未使用のプロパティ値は「0」に設定されています。 – DavidScherer

+0

Chromeでは、これは正規化されているようですが、ChromeのTabキーでは 'keypress'が起動しないようです。 – DavidScherer