JavaScript: キーボード イベント処理をマスターする
Web サイト開発者は、読者が何らかの方法で Web サイトと対話できることを望んでいます。訪問者は、ページを上下にスクロールしたり、入力フィールドに書き込んだり、リンクをクリックして別のページにアクセスしたり、キーの組み合わせを押して特定のアクションをトリガーしたりできます。開発者は、これらすべてのイベントをキャプチャし、必要な機能をユーザーに提供できる必要があります。
このチュートリアルでは、JavaScript でのキーボード イベントの処理に焦点を当てます。さまざまな種類のキーボード イベント、特殊なキー イベントの処理、および押されたキーまたは放されたキーに関する情報の取得について学習します。
キーボードイベントタイプ
キーボードイベントは 3 種類に分類されます。これらは、keydown
、keypress
、および keyup
と呼ばれます。
キーが押されている限り、keydown
イベントがトリガーされます。すべてのキーがトリガーされます。キャラクター価値を生み出すかどうかは関係ありません。たとえば、キーボードの A または Alt キーを押すと、keydown
イベントがトリガーされます。
keypress
イベントは非推奨になりました。文字値を生成するキーが押されたときにのみ起動されます。たとえば、A キーを押すとこのイベントがトリガーされますが、Alt キーを押すとイベントはトリガーされません。代わりに keydown
イベントの使用を検討してください。
ユーザーが押したキーが放されると、keyup
イベントがトリガーされます。
ユーザーがキーボードのいずれかのキーを押し続けたとします。この場合、keydown
イベントが繰り返しトリガーされます。ユーザーがキーを放すと、keyup
イベントがトリガーされます。
キーボードイベントを聞く
この時点で、かなり明白なことについて言及したいと思います。キーボードは、ユーザーから何らかの入力を取得するために使用される入力デバイスです。私たちはそのインプットに基づいて行動を起こします。ただし、ユーザーが入力を送信する他の方法もあります。
ユーザーがフォームに入力した入力フィールドを追跡したい場合は、その入力で他のイベント ( change
など) を使用する方が合理的です。
さらに、キーボード イベントは、フォーカスを受け取ることができる要素に対してのみ生成されます。これには、<input>
要素、<textarea></textarea>
要素、<summary></summary>
要素、および contentEditable
または tabindex を持つ要素が含まれます。
属性のその他の要素。
たとえば、tabindex
または contentEditable
プロパティを設定しない限り、段落要素のキーボード イベントをリッスンすることはできません。ただし、最終的には DOM ツリー内にバブルアップされるため、keydown
または keyup
イベント リスナーをドキュメントにアタッチできます。
これは例です:
リーリーコールバックをアロー関数として提供することもできます。
リーリーキーボードイベントから情報を取得する
前のセクションの基本的なコード スニペットでは、コールバック関数を定義しました。この関数は、引数として event
オブジェクトを受け入れます。この event
オブジェクトには、keydown
または keyup
イベントに関連してアクセスする必要があるすべての情報が含まれています。
知っておくべき便利なプロパティをいくつか紹介します:
-
key
: このプロパティは、押されたキーの文字値を表す文字列を返します。 -
code
: このプロパティは、押された物理キーのコードを表す文字列を返します。 -
repeat
: キーが長時間押されると、このプロパティはブール値true
を返し、keydown
イベントが発生します。複数回トリガーされる。 -
altKey
: ユーザーが Alt キー (Windows の場合) または Option キー (macOS の場合) を押した場合keydown
イベントがトリガーされます。 -
ctrlKey
:keydown
イベントの発生時にユーザーが Control キーを押すと、このプロパティはブール値true# を返します。 ##。
-
metaKey
: keydown
イベントの発生時にユーザーが
Meta キーを押すと、このプロパティはブール値 true# を返します。 ##。 - shiftKey
:
keydown イベントの発生時にユーザーがShift
キーを押すと、このプロパティはブール値 true# を返します。 ##。 keydown
A や
3 などのキーが押された場合、これらのプロパティの値が に対して true になることを意味します。キーダウンイベント。キーも押されています。
次の CodePen デモに注目した後、個々のキーまたはキーの組み合わせを押して、さまざまなプロパティの値が変化することを確認してください。
如果您按键盘顶部的 3 键而不按 Shift 键,则 key
属性的值将变为 3 > 并且 code
属性的值变为 Digit3。但是,按下 Shift 后,key
属性的值将变为 #,而 code
属性仍为 Digit3。
您可以尝试使用其他组合键进行相同的操作,您会注意到 key
属性的值会根据您按下的键而变化。但是,code
属性的值保持不变。
键盘上的某些键通常是重复的。例如,有两个 Shift 键。按左键会将 code
的值设置为 ShiftLeft
。按右边会将 code
的值设置为 ShiftRight
。同样,有两组数字键。字母上方的代码将为您提供 Digit<number></number>
代码,而数字键盘上的代码将为您提供 Numpad<number></number>
代码。
这意味着,如果您的代码依赖于检测特定键,则务必确保您使用 code
属性来检查按下了哪个键。
我想提的另一件重要的事情是,并不是每个人都使用 QWERTY 键盘,而且他们的键盘甚至可能不是英文的。在这种情况下,使用 key
属性来检查按下了哪个键很容易出错。
响应键盘事件
现在我们知道了如何监听键盘事件并从中提取信息,我们可以编写一些代码来对某些特定键的 keydown
和 keyup
事件做出反应。考虑以下代码片段:
const circle = document.querySelector(".circle"); document.addEventListener("keydown", (event) => { if (event.code == "KeyR" && event.repeat != true) { let rVal = Math.floor(200 + Math.random() * 200); circle.setAttribute("style", `width: ${rVal}px; height: ${rVal}px;`); } if (event.key == "B" && event.shiftKey == true) { let rVal = Math.floor(10 + Math.random() * 40); circle.setAttribute("style", `border: ${rVal}px solid orangered;`); } if (event.code == "ArrowUp" && event.repeat != true) { circle.classList.add("animate__animated", "animate__bounce"); } }); document.addEventListener("keyup", (event) => { if (event.code == "ArrowUp") { setTimeout(() => { circle.classList.remove("animate__animated", "animate__bounce"); }, 4000); } });
我们为 keydown
事件创建了一个侦听器,并为 keyup
事件创建了另一个侦听器。这两个事件都附加到 document
。
在 keydown
内,我们检查三个不同的密钥。我使用了 R 键的 event.code
属性来向您展示您可以单独按 R 键或与任何修饰键组合使用,并且它仍会将圆的半径更改为随机值。另一方面,我们使用 event.key
属性来检查其值是否为 B。仅当您同时按 Shift 和 B 时,此块中的代码才会执行,因为这种组合会导致 event.key
属性成为大写“B”。
在 keyup
内,我们检查 ArrowUp
键上的 keyup
事件。一旦钥匙被解除,我们会在四秒的延迟后删除之前附加的类。
以下 CodePen 演示展示了这一切的实际效果:
您应该尝试在上述代码中添加自己的逻辑,以便当用户按下A、S、W键时圆圈会移动> 和D。
最终想法
在本教程中,我们学习了 JavaScript 中键盘事件的基础知识。按下并释放键盘上的按键将分别触发 keydown
和 keyup
事件。与这些事件关联的 event
对象包含您确定按下了哪个键并采取适当操作所需的所有信息。
请记住,键盘只是众多可能的输入设备之一。因此,使用键盘检测任何输入可能并不总是能达到预期效果。在这种情况下,您应该考虑使用与输入相关的事件。
以上がJavaScript: キーボード イベント処理をマスターするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









WordPressは、初心者が簡単に始めることができます。 1.バックグラウンドにログインした後、ユーザーインターフェイスは直感的であり、シンプルなダッシュボードは必要なすべての関数リンクを提供します。 2。基本操作には、コンテンツの作成と編集が含まれます。 WysiWygエディターは、コンテンツの作成を簡素化します。 3.初心者は、プラグインとテーマを介してウェブサイトの機能を拡張でき、学習曲線は存在しますが、練習を通じて習得できます。

wordpressisisgoodforvirtalayanywebprojectoitsversitilityasacms.itexcelsin:1)ユーザーフレンドリー、柔軟性と柔軟性と顧客化の維持、およびプルージンの数値化; 3)seooptimization;

3日以内にWordPressを学ぶことができます。 1.テーマ、プラグインなどのマスター基本知識。2。インストールや作業原則などのコア関数を理解します。 3.例を使用して、基本的および高度な使用法を学びます。 4.デバッグテクニックとパフォーマンスの最適化の提案を理解します。

WIXは、プログラミングの経験がないユーザーに適しており、WordPressは、よりコントロールと拡張機能を必要とするユーザーに適しています。 1)WIXはドラッグアンドドロップエディターとリッチテンプレートを提供しているため、Webサイトをすばやく構築できます。 2)オープンソースのCMSとして、WordPressには巨大なコミュニティとプラグインエコシステムがあり、詳細なカスタマイズと拡張をサポートしています。

WordPress自体は無料ですが、使用するには余分な費用がかかります。1。WordPress.comは、無料から支払いまでの範囲のパッケージを提供し、価格は月あたり数ドルから数十ドルまでの範囲です。 2。WordPress.orgでは、ドメイン名(年間10〜20米ドル)とホスティングサービス(月額5〜50米ドル)を購入する必要があります。 3.ほとんどのプラグインとテーマは無料で、有料価格は数十から数百ドルです。適切なホスティングサービスを選択し、プラグインとテーマを合理的に使用し、定期的に維持および最適化することにより、WordPressのコストを効果的に制御および最適化できます。

人々は、その力と柔軟性のためにWordPressを使用することを選択します。 1)WordPressは、さまざまなWebサイトのニーズに適した、使いやすさとスケーラビリティを備えたオープンソースのCMSです。 2)豊富なテーマとプラグイン、巨大なエコシステム、強力なコミュニティサポートがあります。 3)WordPressの作業原則は、テーマ、プラグイン、コア関数に基づいており、PHPとMySQLを使用してデータを処理し、パフォーマンスの最適化をサポートします。

WordPressはコンテンツ管理システム(CMS)です。コンテンツ管理、ユーザー管理、テーマ、プラグイン機能を提供して、Webサイトコンテンツの作成と管理をサポートします。その実用的な原則には、ブログから企業Webサイトまで、さまざまなニーズに適したデータベース管理、テンプレートシステム、プラグインアーキテクチャが含まれます。

WordPressのコアバージョンは無料ですが、使用中に他の料金が発生する場合があります。 1。ドメイン名とホスティングサービスには支払いが必要です。 2。高度なテーマとプラグインが充電される場合があります。 3.プロフェッショナルサービスと高度な機能が請求される場合があります。
