JavaScript的事件系列二

判断热键shift,ctrl,alt,win

  • shiftkey 当shift按下时为true,默认为false

    var v = ev || window.event;
    if(v.shiftKey)
    
  • ctrlkey 当ctrl按下时为true

    var v = ev || window.event;
    if(v.ctrlKey)
    
  • altkey 当alt按下时为true

    var v = ev || window.event;
    if(v.altKey)
    
  • metakey 当windows键按下时,为true mac下按下command键为true

    var v = ev || window.event;
    if(v.metaKey)
    

案例

实现一个div标签当按下ctrl标签内容为ctrl,当按下shift时,标签内容为shift,当按下alt时,标签内容为alt,当同时按下就同时显示多个,新的一次按下之前的内容清空

完整源码

<!DOCTYPE html>
<html lang="zh-cn">
<head><meta charset="UTF-8"><title>事件对象二</title><style>html{width: 100%;height: 60%;display: flex;justify-content: center;align-items: center;}.d1{background-color: rgba(234, 113, 20, 0.62);width: 350px;height: 40px;border-radius: 12px;font-size: 26px;text-align: center;}</style>
</head>
<body>
<div class="d1" id="d"></div>
<script>var arr = [];//定义数组用来接收按键的内容var d = document.getElementById("d");window.onkeydown = function (ev) {var v = ev || window.event;if(v.shiftKey){arr.push("shift");}if(v.ctrlKey){arr.push("ctrl");}if(v.altKey){arr.push("alt");}if(v.metaKey){arr.push("win");}d.innerText = arr;arr = [];//按下结束进行清零}
</script>
</body>
</html>

获取键码

keydown情况下

使用keyCode 这个键盘大小写只显示大写的键码,只在keydown下支持,还显示其它非字母的键码

var v = ev || window.event;//获取事件对象
//这个键盘大小写只显示大写的键码,只在keydown下支持,还显示其它非字母的键码
var which = v.which || v.keyCode;//获取事件对象的键码属性,返回值为number

keypress情况下

使用charCode 区分大小写这个键盘大小写只显示大小写的键码,只在keypress下支持,只显示字母的键码

var v2 = ev2 || window.event;
//区分大小写这个键盘大小写只显示大小写的键码,只在keypress下支持,只显示字母的键码
var which = v2.which || v2.charCode;//获取字母的键码,返回值为number

案例

完善之前的案例,建立两个div,上面显示keydown的情况,下面显示keypress情况

完整源码

<!DOCTYPE html>
<html lang="zh-cn">
<head><meta charset="UTF-8"><title>事件对象二</title><style>html{width: 100%;height: 60%;display: flex;justify-content: center;align-items: center;}.d1{background-color: rgba(234, 113, 20, 0.62);width: 350px;height: 40px;border-radius: 12px;font-size: 26px;text-align: center;margin-top: 10px;}</style>
</head>
<body><div class="d1" id="d"></div><div class="d1" id="d2"></div>
<script>var arr = [];//定义数组用来接收按键的内容var arr2 = [];//定义数组用来接收按键的内容var d = document.getElementById("d");var d2 = document.getElementById("d2");window.onkeydown = function (ev) {var v = ev || window.event;//获取事件对象//这个键盘大小写只显示大写的键码,只在keydown下支持,还显示其它非字母的键码var which = v.which || v.keyCode;//获取事件对象的属性if(v.shiftKey){arr.push("shift");}if(v.ctrlKey){arr.push("ctrl");}if(v.altKey){arr.push("alt");}if(v.metaKey){arr.push("win");}arr.push(which);d.innerText = arr;arr = [];//按下结束进行清零}window.onkeypress = function (ev2) {//keypress对shiftkey。。。无效var v2 = ev2 || window.event;//区分大小写这个键盘大小写只显示大小写的键码,只在keypress下支持,只显示字母的键码var which = v2.which || v2.charCode;if(v2.shiftKey){arr.push("shift");}if(v2.ctrlKey){arr.push("ctrl");}if(v2.altKey){arr.push("alt");}if(v2.metaKey){arr.push("win");}arr2.push(which);//把键码加入arr2数组d2.innerText = arr2;arr2 = [];//按下结束进行清零}
</script>
</body>
</html>

JavaScript的事件系列二keydown,keypress,获取键码------JavaScript学习之路4相关推荐

  1. Javascript模块化编程系列二: 模块化的标准化(CommonJS AMD)

    前言 Javascript模块化编程系列一: 模块化的驱动 在前一篇介绍了为什么要进行Javascript模块化编程.至于如何实现模块化,不同的开发组织和个人具体的实现方式肯定是不一样.如何统一一个规 ...

  2. JavaScript三大事件(二十二)

    JS三大事件 鼠标事件 click:单击 dblclick:双击 mousedown:鼠标按下 mouseup:鼠标抬起 mouseover:鼠标悬浮 mouseout:鼠标离开 mousemove: ...

  3. 深度学习入门笔记系列 ( 二 )——基于 tensorflow 的一些深度学习基础知识

    本系列将分为 8 篇 .今天是第二篇 .主要讲讲 TensorFlow 框架的特点和此系列笔记中涉及到的入门概念 . 1.Tensor .Flow .Session .Graphs TensorFlo ...

  4. 二狗子的C语言学习之路(数组)

    一.数组的概念: 1.数组:由多个类型相同数据的集合 2.元素访问:a[n]~a[n-1] 二.定义 1.int inta[10]={0,1,2,3}: 2.#define N 10 //宏定义 in ...

  5. 重学JavaScript深入理解系列(六)

    JavaScript深入理解--闭包(Closures) 概要 本文将介绍一个在JavaScript经常会拿来讨论的话题 -- 闭包(closure).闭包其实已经是个老生常谈的话题了: 有大量文章都 ...

  6. 重学JavaScript深入理解系列(一)

    JavaScript深入理解--执行上下文(Execution Context) 定义 每当控制器到达ECMAScript可执行代码的时候,控制器就进入了一个执行上下文. 执行上下文(简称:EC) 以 ...

  7. Javascript乱弹设计模式系列(1) - 观察者模式(Observer)

    前言 博客园谈设计模式的文章很多,我也受益匪浅,包括TerryLee.吕震宇等等的.NET设计模式系列文章,强烈推荐.对于我,擅长于前台代码的开发,对于设计模式也有一定的了解,于是我想结合Javasc ...

  8. ASP.NET Google Maps Javascript API V3 实战基础篇一获取和设置事件处理程序中的属性...

    ASP.NET Google Maps Javascript API V3 实战基础篇一获取和设置事件处理程序中的属性 <%@ Page Language="C#" Auto ...

  9. Vue+iview键盘事件keyup、keydown、keypress

    详解键盘事件(keydown,keypress,keyup) 1.定义 keydown:按下键盘键 keypress:紧接着keydown事件触发(只有按下字符键时触发) keyup:释放键盘键 顺序 ...

最新文章

  1. php某列为键数组为值,PHP 将二维数组中某列值作为数组的键名 -- 超实用
  2. 【 English 】程序员必备单词
  3. 浅析如何从吸引蜘蛛爬取的角度进行网站内容优化建设
  4. Application.mk
  5. CSS3移动应用程序企业网站模板
  6. java mysql 配置_Java连接MySQL数据库详细分析
  7. Python+Opencv图像处理新手入门教程(二):颜色空间转换,图像大小调整,灰度直方图
  8. 挠场的科学丨三、特斯拉所来不及知道的「挠场」
  9. itunes刷机一直正在恢复固件要多久_ios刷机报错故障汇总指南
  10. Android 开 发 资 源 分 享
  11. 佳能Canon imageCLASS MF4830d 打印机驱动
  12. python发送短信接口_Python发短信接口
  13. Codeforces Round #677 (Div. 3) C. Dominant Piranha
  14. 妙!云服务器远程登录,本地听声音
  15. QR法求解特征值特征向量
  16. OCiOS开发:使用相册、照相机和录像
  17. 192、如何查询局域网内在线的监控设备IP
  18. 吸墨涂料市场现状及未来发展趋势
  19. 渗透测试工具-瑞士军刀NC
  20. 红队培训班作业 | 五种免杀bypass火绒360姿势横向测评:哪款更适合你?

热门文章

  1. pytorch实现手写数字图片识别
  2. java2017期末考试,2017年java考试模拟试卷(2)
  3. Cesium基础-表面面积量算(依地形量算、依模型表面量算)
  4. 欢迎高校选修云创大数据免费在线直播课!
  5. Neuron:自动优化TMS线圈放置,实现个性化靶向功能网络刺激
  6. html下拉框的宽度怎么设置,在HTML选择下拉选项中设置下拉元素的宽度
  7. datadog ebpf模块 offset-guess.o 问题排查解决
  8. Saas的概念及相关应用
  9. Linux环境go项目启动提示/usr/bin/ld: cannot find -lxxx
  10. 毕业季快到了,在为毕业设计担心嘛?收下这份毕设知识大扫盲