OSX 10.6.8でクロム15を使用
イベント リスナーを追加するpreventDefault
ときに、keypress
イベントが使用されているときに挿入すると、大量の問題が発生することがわかりました。
その行のコメントを外すevent.preventDefault();
と、キープレスイベントが機能しなくなることがわかります。どうしたんだ?
OSX 10.6.8でクロム15を使用
イベント リスナーを追加するpreventDefault
ときに、keypress
イベントが使用されているときに挿入すると、大量の問題が発生することがわかりました。
その行のコメントを外すevent.preventDefault();
と、キープレスイベントが機能しなくなることがわかります。どうしたんだ?
preventDefault()
まさにそれが想定されていることを行います。キーのデフォルト アクションを停止します。キーのデフォルト アクションが必要な場合は、呼び出さないでください。
Chrome と Firefox の両方でpreventDefault()
、フィドルからコメントを外した場合でも、キーが繰り返し押されます。集中力を切らしていたのかもしれません。
達成しようとしていることについて詳しく説明していただければ、代わりに何を提案すればよいかを理解するのに役立ちます。
jsFiddle では、ドキュメント レベルでキーをリッスンしています。キーストロークがドキュメントに伝播するまでに、キーストロークは対象となる個々のオブジェクトによってすでに処理されています。キーが処理されないようにインターセプトして防止したい場合は、元の対象となるオブジェクトのイベント ハンドラーでキーを処理する必要があります。ドキュメント レベルからキーのデフォルトを防止することはできません。この jsFiddle では、キーストロークが最初に移動するオブジェクトのキーストロークをインターセプトします。キーストロークが完全にブロックされていることがわかります。また、ここで確認できるブラウザーの違いがいくつかあるため、クロスブラウザーの動作はこの点で完全ではないことに注意してください。