JavaScript: 키보드 이벤트 처리 마스터하기
웹사이트 개발자는 독자가 어떤 방식으로든 웹사이트와 상호 작용하기를 원합니다. 방문자는 페이지를 위아래로 스크롤하고, 입력 필드에 글을 쓰고, 링크를 클릭하여 다른 페이지에 액세스하거나, 키 조합을 눌러 특정 작업을 실행할 수 있습니다. 개발자는 이러한 모든 이벤트를 캡처하고 사용자에게 필요한 기능을 제공할 수 있어야 합니다.
이 튜토리얼에서는 JavaScript에서 키보드 이벤트를 처리하는 데 중점을 둡니다. 다양한 유형의 키보드 이벤트, 특수 키 이벤트 처리, 누르거나 떼는 키에 대한 정보 가져오기에 대해 알아봅니다.
키보드 이벤트 유형
키보드 이벤트는 세 가지 유형으로 구분됩니다. 이것을 keydown
、keypress
和 keyup
이라고 합니다.
키를 누르고 있는 동안 keydown
事件。所有键都会被触发。它们是否产生角色价值并不重要。例如,按键盘上的 A 或 Alt 键将触发 keydown
이벤트가 실행됩니다.
keypress
事件已弃用。它仅在按下产生字符值的键时触发。例如,按 A 键将触发此事件,但按 Alt 键则不会。您应该考虑使用 keydown
교체해드리는 이벤트입니다.
keyup
이벤트는 사용자가 누른 키를 놓으면 트리거됩니다.
사용자가 키보드의 아무 키나 계속 누르고 있다고 가정해 보겠습니다. 이 경우 keydown
이벤트가 반복적으로 실행됩니다. 사용자가 키를 놓으면 keydown
事件将被重复触发。一旦用户释放密钥,就会触发 keyup
이벤트가 시작됩니다.
키보드 이벤트 듣기
이 시점에서 나는 상당히 분명한 사실을 언급하고 싶습니다. 키보드는 사용자로부터 입력을 받는 데 사용되는 입력 장치입니다. 우리는 해당 의견을 바탕으로 조치를 취합니다. 그러나 사용자가 입력을 보내는 다른 방법이 있습니다.
사용자가 양식에 작성하는 입력 필드를 추적하려면 해당 입력에 다른 이벤트(예: change
)를 사용하는 것이 더 합리적입니다.
또한 키보드 이벤트는 포커스를 받을 수 있는 요소에 대해서만 생성됩니다. 여기에는 <input>
元素、<textarea></textarea>
元素、<summary></summary>
元素以及具有 contentEditable
或 tabindex
속성이 있는 다른 요소가 포함됩니다.
예를 들어 tabindex
또는 contentEditable
속성을 설정하지 않으면 단락 요소에서 키보드 이벤트를 들을 수 없습니다. 그러나 결국 DOM 트리가 버블링되므로 keydown
또는 tabindex
或 contentEditable
属性,否则您将无法侦听段落元素上的键盘事件。但是,它最终会在 DOM 树中冒泡,因此您仍然可以将 keydown
或 keyup
이벤트 리스너를 문서에 연결할 수 있습니다.
예는 다음과 같습니다.
으아악콜백을 화살표 함수로 제공할 수도 있습니다.
으아악키보드 이벤트에서 정보 얻기
이전 섹션의 기본 코드 조각에서는 콜백 함수를 정의했습니다. 이 함수는 이벤트
개체를 인수로 받아들입니다. 이 이벤트
개체에는 keydown
또는 event
对象作为其参数。此 event
对象包含您可能需要访问的与 keydown
或 keyup
이벤트와 관련하여 액세스해야 할 수 있는 모든 정보가 포함되어 있습니다.
다음은 여러분이 알아야 할 몇 가지 유용한 속성입니다:
-
key
: 이 속성은 누른 키의 문자 값을 나타내는 문자열을 반환합니다. -
code
: 이 속성은 누른 실제 키의 코드를 나타내는 문자열을 반환합니다. -
repeat
repeat
:如果长时间按住某个键,该属性将返回布尔值true
,导致keydown
: 키를 오랫동안 누르면 이 속성은 부울 값true
를 반환하여keydown
이벤트를 발생시킵니다. 여러 번 트리거되었습니다. -
altKey
altKey
:如果用户按下 Alt 键(在 Windows 上)或 Option 键(在在 macOS 上)当keydown
:keydown
이벤트가 발생할 때 사용자가 Alt - 키(Windows) 또는 Option
ctrlKey
:如果用户在keydown
事件触发时按下 Control 键,则此属性返回布尔值true
키(macOS)를 누르는 경우. -
ctrlKey
metaKey
:如果用户在keydown
事件触发时按下 Meta 键,则此属性返回布尔值true
:keydown
이벤트가 발생할 때 사용자가 Control - 키를 누르면 이 속성은 부울 값
true
를 반환합니다.shiftKey
:如果用户在keydown
事件触发时按下 Shift 键,则此属性返回布尔值true
metaKey
keydown
이벤트가 발생할 때 사용자가 Metakeydown
事件被触发时”部分。这意味着,如果在执行上述任一操作时按下 A 或 3 等键,这些属性的值将为 true
,用于 keydown
키를 누르면 이 속성은 부울 값 true
를 반환합니다.
shiftKey
🎜: 이 속성은 keydown
이벤트가 발생할 때 사용자가 🎜Shift🎜 키를 누르면 부울 값 true
를 반환합니다. 🎜
🎜
🎜마지막 네 가지 속성 설명 모두에 "keydown
이벤트가 발생하는 경우" 부분이 포함되어 있음을 알 수 있습니다. 즉, 위 작업을 수행하는 동안 🎜A🎜 또는 🎜3🎜과 같은 키를 누르면 keydown
에 대해 이러한 속성 값이 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











WordPress는 초보자가 쉽게 시작할 수 있습니다. 1. 백그라운드에 로그인 한 후 사용자 인터페이스는 직관적이며 간단한 대시 보드는 필요한 모든 기능 링크를 제공합니다. 2. 기본 작업에는 컨텐츠 작성 및 편집이 포함됩니다. Wysiwyg 편집기는 컨텐츠 생성을 단순화합니다. 3. 초보자는 플러그인 및 테마를 통해 웹 사이트 기능을 확장 할 수 있으며 학습 곡선은 존재하지만 연습을 통해 마스터 할 수 있습니다.

WordPressIsGoodForVirtSallyWebProjectDueToitsAcms.itexcelsin : 1) 사용자 친화적 인, easywebsiteseSetup; 2) 유연성 및 커스텀 화를 허용합니다

WIX는 프로그래밍 경험이없는 사용자에게 적합하며 WordPress는 더 많은 제어 및 확장 기능을 원하는 사용자에게 적합합니다. 1) Wix는 드래그 앤 드롭 편집자와 풍부한 템플릿을 제공하여 웹 사이트를 신속하게 구축 할 수 있습니다. 2) 오픈 소스 CMS로서 WordPress는 거대한 커뮤니티 및 플러그인 생태계를 보유하고 있으며 심층적 인 사용자 정의 및 확장을 지원합니다.

WordPress 자체는 무료이지만 사용 비용은 추가 비용이 필요합니다. 1. WordPress.com은 무료에서 유료에 이르는 패키지를 제공하며, 한 달에 몇 달러에서 수십 달러에 이르는 가격으로 가격이 제공됩니다. 2. WordPress.org는 도메인 이름 (연간 10-20 달러)과 호스팅 서비스 (월 5-50 달러)를 구매해야합니다. 3. 대부분의 플러그인과 테마는 무료이며 유급 가격은 수십에서 수백 달러 사이입니다. 플러그인과 테마를 합리적으로 사용하고 정기적으로 유지하고 최적화하는 올바른 호스팅 서비스를 선택함으로써 WordPress의 비용은 효과적으로 제어되고 최적화 될 수 있습니다.

3 일 이내에 WordPress를 배울 수 있습니다. 1. 테마, 플러그인 등과 같은 마스터 기본 지식 2. 설치 및 작업 원칙을 포함한 핵심 기능을 이해하십시오. 3. 예제를 통해 기본 및 고급 사용법을 배우십시오. 4. 디버깅 기술 및 성능 최적화 제안을 이해하십시오.

사람들은 힘과 유연성 때문에 WordPress를 사용하기로 선택합니다. 1) WordPress는 다양한 웹 사이트 요구에 적합한 사용 편의성 및 확장 성을 가진 오픈 소스 CM입니다. 2) 풍부한 주제와 플러그인, 거대한 생태계 및 강력한 지역 사회 지원이 있습니다. 3) WordPress의 작동 원리는 테마, 플러그인 및 핵심 기능을 기반으로하며 PHP 및 MySQL을 사용하여 데이터를 처리하며 성능 최적화를 지원합니다.

WordPress는 CMS (Content Management System)입니다. 웹 사이트 콘텐츠의 생성 및 관리를 지원하기 위해 컨텐츠 관리, 사용자 관리, 테마 및 플러그인 기능을 제공합니다. 작업 원칙에는 데이터베이스 관리, 템플릿 시스템 및 플러그인 아키텍처가 포함되며 블로그에서 회사 웹 사이트에 이르기까지 다양한 요구에 적합합니다.

WordPress의 핵심 버전은 무료이지만 사용 중에 다른 요금이 발생할 수 있습니다. 1. 도메인 이름과 호스팅 서비스에는 지불이 필요합니다. 2. 고급 테마 및 플러그인이 충전 될 수 있습니다. 3. 전문 서비스 및 고급 기능이 청구될 수 있습니다.
