键盘事件

键盘事件由用户击打键盘触发

  • 主要有 keydownkeyupkeypress三个事件,它们都继承了 KeyboardEvent 接口。
  • keydown         按下键时 触发
  • keyup        松开键时 触发
  • keypress        按下有值的键时 触发

即按下 Ctrl、Alt、Shift、Meta 这样无值的键,这个事件不会触发。

对于有值的键,按下时先触发 keydown 事件,再触发这个事件

  • 如果用户按下 不放时,就会连续触发键盘事件
  • keydown
    keypress
    keydown
    keypress
    ...(重复以上过程)
    终于松开了 keyup

  • KeyboardEvent 接口

描述用户与键盘的互动。

这个接口继承了 Event 接口,并且定义了自己的实例属性和实例方法

  • 浏览器原生提供 KeyboardEvent 构造函数

用来新建键盘事件的实例

  • var keyEvent = new KeyboardEvent(type, options)

第一个参数是字符串,表示事件类型

第二个参数是一个事件配置对象,该参数可选。

除了 Event 接口提供的属性,还可以配置以下字段,它们都是可选的

  • key       字符串            当前按下的键,默认为空字符串。
    code      字符串            表示当前按下的键的字符串形式,默认为空字符串。
    location       整数            当前按下的键的位置,默认为0。
    ctrlKey       布尔值            是否按下 Ctrl 键,默认为false。
    shiftKey       布尔值            是否按下 Shift 键,默认为false。
    altKey       布尔值            是否按下 Alt 键,默认为false。
    metaKey       布尔值            是否按下 Meta 键,默认为false。
    repeat       布尔值            是否重复按键,默认为false

  • KeyboardEvent 的实例属性

event.altKey        是否按下 Alt 键
event.ctrlKey        是否按下 Ctrl 键
event.metaKey        是否按下 meta 键(Mac 系统是一个四瓣的小花,Windows 系统是 windows 键)
event.shiftKey        是否按下 Shift 键

  • function showChar(e) {
    console.log('ALT: ' + e.altKey);
    console.log('CTRL: ' + e.ctrlKey);
    console.log('Meta: ' + e.metaKey);
    console.log('Meta: ' + e.shiftKey);
    }; document.body.addEventListener('keydown', showChar, false);

event.code        返回一个字符串

表示当前按下的键的字符串形式。

该属性只读。

下面是一些常用键的字符串形式,其他键请查文档

  • 数字键0 - 9        返回 digital0 - digital9
    字母键A - z        返回 KeyA - KeyZ
    功能键F1 - F12        返回 F1 - F12
    方向键         返回 ArrowDown、ArrowUp、ArrowLeft、ArrowRight
    Alt 键        返回 AltLeft 或 AltRight
    Shift 键        返回 ShiftLeft 或 ShiftRight
    Ctrl 键        返回 ControLeft 或 ControlRight

event.key        返回一个字符串

表示按下的键名。

该属性只读。

如果按下的键代表可打印字符,则返回这个字符,比如数字、字母

如果按下的键代表不可打印的特殊字符,则返回预定义的键值,

比如 Backspace,Tab,Enter,Shift,Control,Alt,CapsLock,

Esc,Spacebar,PageUp,PageDown,End,Home,Left,

Right,Up,Down,PrintScreen,Insert,Del,Win,F1~F12,

NumLock,Scroll 等

如果同时按下一个 控制键 和一个 符号键 ,则返回符号键的键名。比如,按下 Ctrl + a,则返回a;按下 Shift + a,则返回大写的 A

如果无法识别键名,返回字符串 "Unidentified"

event.location        返回一个整数,

表示按下的键处在键盘的哪一个区域。

  • 0            键盘的主区域,或者无法判断处于哪一个区域。
    1            键盘的左侧,只适用那些有两个位置的键(比如 Ctrl 和 Shift 键)。
    2            键盘的右侧,只适用那些有两个位置的键(比如 Ctrl 和 Shift 键)。
    3            数字小键盘。

event.repeat        返回一个布尔值

代表该键是否被按着不放,以便判断是否重复这个键

即浏览器会持续触发 keydown 和 keypress 事件,直到用户松开手为止

  • event.getModifierState()        返回一个布尔值

表示是否按下激活指定的功能键

  • Alt            Alt 键

    CapsLock            大写锁定键
    Control            Ctrl 键
    Meta            Meta 键
    NumLock            数字键盘开关键
    Shift            Shift 键

  • if (    event.getModifierState('Control') +
    event.getModifierState('Alt') +
    event.getModifierState('Meta') > 1){ //只要Control、Alt、Meta里面,同时按下任意两个或两个以上的键就返回
    return;
    }

(94)Wangdao.com_第二十七天_键盘事件的更多相关文章

  1. (93)Wangdao.com_第二十六天_鼠标事件

    鼠标事件 与鼠标相关的事件,继承了 MouseEvent 接口 分类: click        按下鼠标(通常是按下主按钮)时触发.        mousedown 首先触发,mouseup 接着 ...

  2. (96)Wangdao.com_第二十九天_表单事件

    表单事件 input 事件        select 事件        change 事件        invalid 事件        reset 事件         submit 事件 ...

  3. JavaScript的事件对象_键盘事件

    用户在使用键盘时会触发键盘事件.“DOM2 级事件”最初规定了键盘事件,结果又删除了相应的内容.最终还是使用最初的键盘事件,不过 IE9 已经率先支持“DOM3”级键盘事件. 一.键码 在发生 key ...

  4. (95)Wangdao.com_第二十八天_进度事件

    进度事件 进度事件 用来描述资源加载的进度, 主要由 AJAX 请求.<img>.<audio>.<video>.<style>.<link> ...

  5. (92)Wangdao.com_第二十五天_线程机制_H5 Web Workers 分线程任务_事件 Event

    浏览器内核 支撑浏览器运行的最核心的程序 IE 浏览器内核            Trident内核,也是俗称的IE内核Chrome 浏览器内核            统称为 Chromium 内核或 ...

  6. 第二十七课:滚轮事件,mouseenter与mouseleave事件的修复

    滚轮事件 jQuery核心库没有对mousewheel事件的差异性进行处理,但作为一个常用的事件,本文讲解一下. mousewheel事件只有火狐浏览器不支持.mousewheel用于取得滚动距离的属 ...

  7. javaSE第二十七天

    第二十七天    447 1:反射(理解)    447 (1)类的加载及类加载器    447 (2)反射:    448 A:定义    448 B:获取字节码对象的三种方式    449 (3) ...

  8. 深入理解DOM事件类型系列第二篇——键盘事件

    × 目录 [1]类型 [2]顺序 [3]按键信息[4]应用 前面的话 鼠标和键盘是电脑端主要的输入设备,上篇介绍了鼠标事件,本文将详细介绍键盘事件 类型 键盘事件用来描述键盘行为,主要有keydown ...

  9. NeHe OpenGL教程 第二十七课:影子

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

随机推荐

  1. 使用nuxt.js官方脚手架构建项目时ES6编译问题SyntaxError: Unexpected token import

    用nuxt集成koa2做vue后台,官方自带脚手架搭建的koa2仍是ES5语法,在构建koa2时默认的nodemon是没有使用babel编译的, 所以首先需要在启动命令后加上--exec babel- ...

  2. 迭代器模式-Iterator(Java实现)

    迭代器模式-Iterator 用于访问一个集合中的各个元素, 而又不会暴露集合的内部的细节. 本文展示的例子就是, 在猫群组里, 用迭代器遍历每一只猫. 本文章的例子的继承关系图如下: 其中: Cat ...

  3. HDU 5963(游戏 博弈+规律)

    题意是: 一群男生和一群女生玩游戏:给出一棵 n 个节点的树,这棵树的每条边有一个权值 0 或 1. 在一局游戏开始时,确定一个节点作为根.从女生开始,双方轮流进行操作. 当一方操作时,要先选择一个不 ...

  4. OpenStack虚拟机冷迁移与热迁移

    一.虚拟机迁移分析 openstacvk虚拟机迁移分为冷迁移和热迁移两种方式. 1.1冷迁移: 冷迁移(cold migration),也叫静态迁移.关闭电源的虚拟机进行迁移.通过冷迁移,可以选择将关 ...

  5. Arduino传感器学习目录

    Arduino-接口图  在Windows上安装Arduino-IDE  函数库和程序架构介绍   Arduino语法-变量和常量 Arduino常用的数据类型以及转换  Arduino—运算符   ...

  6. tp学习笔记1

    1.在tp中,model实际表示的只是一条记录,所以是个一维数组.所有记录组成的记录集,是用collection对象表示的. 2.model有一个静态方法get,使用:model::get(),返回的 ...

  7. Android 控件背景选择图片还是drawable XML资源

    决定一个控件应该是否用Drawable XML渲染,应考虑以下几个因素: * App是否要支持多分辨率: * App是否有瘦身的需要: * 图案是否足够简单: * 图案需要自由缩放: * 设计开发工作 ...

  8. windows :config windows update … 一直处于假死状态

    参考文章:http://www.cnblogs.com/teacat/p/9204225.html 环境:win7 64bit 旗舰版 问题:重启后,系统更新到35%后,一直处于假死状态,未能正确进入 ...

  9. postgresql9.1数据库加解密

    --如下为postgresql9.1数据库加解密模块配置 --设置schemapsql -U postgres -h localhostset schema 'sbdc';--生成日志\o E:/sh ...

  10. RSF 分布式 RPC 服务框架的分层设计

    RSF 是个什么东西? 一个高可用.高性能.轻量级的分布式服务框架.支持容灾.负载均衡.集群.一个典型的应用场景是,将同一个服务部署在多个Server上提供 request.response 消息通知 ...