JavaScript 键盘事件的处理及属性详解

 更新时间:2023年01月19日 09:03:32   作者:天行无忌  
这篇文章主要为大家介绍了JavaScript 键盘事件的处理及属性详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

引言

JavaScript 中的事件,当用户或浏览器尝试操作页面时,就会发生事件来处理 JavaScript 与HTML的交互。正如大家所知,JavaScript 与HTML一起工作,因此,页面加载、单击按钮、最小化窗口、单击鼠标、敲打键盘等发生的一切都是事件。就像在单击按钮时向用户显示任何消息一样,这是通过事件发生的。

所有HTML元素(如按钮、文本框、图像)都可以包含可以使用 JavaScript 代码触发的事件。所有这些事件都是DOM的一部分(文档对象模型)。在这里,将简单介绍一下键盘事件。

键盘事件对象描述了用户与键盘的交互,每个事件都描述了用户与一个按键(或一个按键和修饰键的组合)的单个交互;事件类型keydownkeypresskeyup 用于识别不同的键盘活动类型。

  • keydown:当按下键盘上的某个键时触发,并在按住该键时重复触发。
  • keyup:当释放键盘上的键时触发。
  • keypress:当按下 abc 之类的字符键盘时触发,而不是左箭头键、home 或结束键盘,... 当按住键盘上的键时,按键也会重复触发。

处理键盘事件

要处理键盘事件,需要执行以下步骤:

  • 首先,选择将触发键盘事件的元素,通常是表单元素。
  • 然后,使用 element.addEventListener() 来注册事件处理程序。

假设有以下带有 id 的文本框 message

<input type="text" id="message">

添加事件的代码如下:

let msg = document.getDocumentById('message');
msg.addEventListener("keydown", (event) => {
    // 事件处理逻辑
});
msg.addEventListener("keypress", (event) => {
    // 事件处理逻辑
});
msg.addEventListener("keyup", (event) => {
    // 事件处理逻辑
});

键盘事件属性

键盘事件有两个重要的属性:keycodekey 属性返回已按下的字符,而 code 属性返回物理键码。

下面主要简单说明一下JavaScript代码部分。

首先,将 DOM 元素赋值给变量以便通过 JavaScript 操作这些元素。

const events = document.querySelector(".event");
const keyEvent = document.querySelector(".event-key .event-value");
const keyCodeEvent = document.querySelector(".event-keyCode .event-value");
const CodeEvent = document.querySelector(".event-code .event-value");
const whichEvent = document.querySelector(".event-which .event-value");
const shiftKey = document.querySelector(".key-shift .key-status");
const ctrlKey = document.querySelector(".key-ctrl .key-status");
const altKey = document.querySelector(".key-alt .key-status");

querySelectorquerySelectorAll 基本上是使用 className 来获取 Html 元素。它们可用于通过类、ID或标签来获取元素。querySelectorquerySelectorAll 之间的基本区别是 querySelectorAll 将返回具有相同类的 NodeList,而 querySelector 将获取该类的单个元素。如果有多个具有相同类或标签的元素,那么它只会获取第一个元素。

下面添加事件到相应的DOM元素:

function keyboardEvents(e) {
    e.preventDefault();
    activeKey(e);
    if (e.key === " ") {
        keyEvent.style.fontStyle = "italic";
        keyEvent.textContent = "(space)";
    } else {
        keyEvent.textContent = e.key;
        keyEvent.style.fontStyle = "normal";
    }
    keyCodeEvent.textContent = e.keyCode;
    CodeEvent.textContent = e.code;
    whichEvent.textContent = e.which;
}

keyboardEvents 接受一个参数,即 eevent ,该参数将是包含事件的所有属性的对象。

  • e.preventDefault() 将阻止浏览器的默认行为,·例如:按功能键。
  • 从 DOM 获取的所有元素都有一些属性,textContent 就是其中之一,它将更新元素的内容。
  • e 有一些属性,e.keyCodee.key 是附加到键盘事件的属性之一,而其他事件如 clickdblclickchange等将包含不同的属性。
  • 将事件监听器附加到 window,这个是全局元素,事件将委托到 window 下的所有元素。
  • 当按下/按下键盘键时,将触发 keydown 事件。

现在将处理特殊键,如 ShiftCtrlAlt

function specialKeys(e) {
    shiftKey.textContent = e.shiftKey;
    ctrlKey.textContent = e.ctrlKey;
    altKey.textContent = e.altKey;
}

e.shiftKeye.ctrlKeye.altKey 将分别根据是否按下键返回布尔值 truefalse。并且此函数分配给两个事件侦听器,因为在按下键时,它将更新值,并且在按下键时,它将返回 false

以上就是JavaScript 键盘事件的处理及属性详解的详细内容,更多关于JavaScript 键盘事件的资料请关注脚本之家其它相关文章!

相关文章

  • 前端JavaScript算法找出只出现一次的数字

    前端JavaScript算法找出只出现一次的数字

    这篇文章主要为大家介绍了前端JavaScript算法找出只出现一次的数字的算法示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • 微信小程序 http请求的session管理

    微信小程序 http请求的session管理

    这篇文章主要介绍了微信小程序 http请求的session管理的相关资料,需要的朋友可以参考下
    2017-06-06
  • 关于前端JavaScript ES6详情

    关于前端JavaScript ES6详情

    这篇文章主要介绍了关于前端JavaScript中的ES6,ES6是一个泛指,含义是 5.1 版以后的 JavaScript 的下一代标准,涵盖了 ES2015、ES2016、ES2017语法标准,ES6新特性目前只有在一些较新版本浏览器得到支持,老版本浏览器里面运行我们需要将ES6转换为ES5
    2021-10-10
  • threeJs实现波纹扩散及光标浮动效果详解

    threeJs实现波纹扩散及光标浮动效果详解

    这篇文章主要为大家介绍了threeJs实现波纹扩散及光标浮动效果详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • 详解JS前端使用迭代器和生成器原理及示例

    详解JS前端使用迭代器和生成器原理及示例

    这篇文章主要为大家介绍了详解JS前端使用迭代器和生成器原理及示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • 浅谈 JavaScript 沙箱Sandbox

    浅谈 JavaScript 沙箱Sandbox

    在计算机安全中,沙箱(Sandbox)是一种用于隔离正在运行程序的安全机制,通常用于执行未经测试或不受信任的程序或代码,它会 为待执行的程序创建一个独立的执行环境,内部程序的执行不会影响到外部程序的运行,下文我们来介绍一个“浏览器世界”的沙箱
    2021-10-10
  • rollup输出的6种格式详解

    rollup输出的6种格式详解

    这篇文章主要为大家介绍了rollup输出的6种格式详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • 关于js typeof 与 instanceof 判断数据类型区别及开发使用

    关于js typeof 与 instanceof 判断数据类型区别及开发使用

    我们经常会遇到判断一个变量的数据类型或该变量是否为空值的情况,你是如何去选择判断类型操作符的?本文来记录一下我们开发人员必须掌握关于 typeof 和 instanceof 的知识点及在开发中的使用建议,同时在面试过程中也经常会遇到这样的问题,需要的朋友可参考下文章内容
    2021-10-10
  • 微信小程序tabbar不显示解决办法

    微信小程序tabbar不显示解决办法

    这篇文章主要介绍了微信小程序tabbar不显示解决办法的相关资料,需要的朋友可以参考下
    2017-06-06
  • 微信小程序 本地数据存储实例详解

    微信小程序 本地数据存储实例详解

    这篇文章主要介绍了微信小程序 本地数据存储实例详解的相关资料,需要的朋友可以参考下
    2017-04-04

最新评论