目次
キーボードイベントタイプ
キーボードイベントを聞く
キーボードイベントから情報を取得する
响应键盘事件
最终想法
ホームページ CMS チュートリアル &#&プレス JavaScript: キーボード イベント処理をマスターする

JavaScript: キーボード イベント処理をマスターする

Sep 04, 2023 am 11:29 AM

JavaScript: キーボード イベント処理をマスターする

Web サイト開発者は、読者が何らかの方法で Web サイトと対話できることを望んでいます。訪問者は、ページを上下にスクロールしたり、入力フィールドに書き込んだり、リンクをクリックして別のページにアクセスしたり、キーの組み合わせを押して特定のアクションをトリガーしたりできます。開発者は、これらすべてのイベントをキャプチャし、必要な機能をユーザーに提供できる必要があります。

このチュートリアルでは、JavaScript でのキーボード イベントの処理に焦点を当てます。さまざまな種類のキーボード イベント、特殊なキー イベントの処理、および押されたキーまたは放されたキーに関する情報の取得について学習します。

キーボードイベントタイプ

キーボードイベントは 3 種類に分類されます。これらは、keydownkeypress、および 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 イベントに関連してアクセスする必要があるすべての情報が含まれています。

知っておくべき便利なプロパティをいくつか紹介します:

  1. key: このプロパティは、押されたキーの文字値を表す文字列を返します。
  2. code: このプロパティは、押された物理キーのコードを表す文字列を返します。
  3. repeat: キーが長時間押されると、このプロパティはブール値 true を返し、keydown イベントが発生します。複数回トリガーされる。
  4. altKey: ユーザーが Alt キー (Windows の場合) または Option キー (macOS の場合) を押した場合 keydown イベントがトリガーされます。
  5. ctrlKey: keydown イベントの発生時にユーザーが Control キーを押すと、このプロパティはブール値 true# を返します。 ##。
  6. metaKey: keydown イベントの発生時にユーザーが Meta キーを押すと、このプロパティはブール値 true# を返します。 ##。
  7. shiftKey: keydown イベントの発生時にユーザーが Shift キーを押すと、このプロパティはブール値 true# を返します。 ##。 最後の 4 つのプロパティの説明すべてに、「
  8. keydown
イベントが発生したとき」の部分が含まれていることがわかります。これは、上記のアクションのいずれかの実行中に

A3 などのキーが押された場合、これらのプロパティの値が に対して 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 属性来检查按下了哪个键很容易出错。

响应键盘事件

现在我们知道了如何监听键盘事件并从中提取信息,我们可以编写一些代码来对某些特定键的 keydownkeyup 事件做出反应。考虑以下代码片段:

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。仅当您同时按 ShiftB 时,此块中的代码才会执行​​,因为这种组合会导致 event.key 属性成为大写“B”。

keyup 内,我们检查 ArrowUp 键上的 keyup 事件。一旦钥匙被解除,我们会在四秒的延迟后删除之前附加的类。

以下 CodePen 演示展示了这一切的实际效果:

您应该尝试在上述代码中添加自己的逻辑,以便当用户按下ASW键时圆圈会移动> 和D

最终想法

在本教程中,我们学习了 JavaScript 中键盘事件的基础知识。按下并释放键盘上的按键将分别触发 keydownkeyup 事件。与这些事件关联的 event 对象包含您确定按下了哪个键并采取适当操作所需的所有信息。

请记住,键盘只是众多可能的输入设备之一。因此,使用键盘检测任何输入可能并不总是能达到预期效果。在这种情况下,您应该考虑使用与输入相关的事件。

以上がJavaScript: キーボード イベント処理をマスターするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

WordPressは初心者にとって簡単ですか? WordPressは初心者にとって簡単ですか? Apr 03, 2025 am 12:02 AM

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

ワードプレスは何に適していますか? ワードプレスは何に適していますか? Apr 07, 2025 am 12:06 AM

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

WordPressを3日で学ぶことはできますか? WordPressを3日で学ぶことはできますか? Apr 09, 2025 am 12:16 AM

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

WixまたはWordPressを使用する必要がありますか? WixまたはWordPressを使用する必要がありますか? Apr 06, 2025 am 12:11 AM

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

WordPressの費用はいくらですか? WordPressの費用はいくらですか? Apr 05, 2025 am 12:13 AM

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

なぜWordPressを使用するのはなぜですか? なぜWordPressを使用するのはなぜですか? Apr 02, 2025 pm 02:57 PM

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

WordPressはCMSですか? WordPressはCMSですか? Apr 08, 2025 am 12:02 AM

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

WordPressはまだ無料ですか? WordPressはまだ無料ですか? Apr 04, 2025 am 12:06 AM

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

See all articles