JS监听组合按键思路及实现过程


Posted in Javascript onApril 17, 2020

前言

我们经常用到组合键,例如alt+f4,crtl+enter。在开发中也会有这种需求。

组合键类型

单独组合,二键组合,三键组合

思路

1、获取键盘上的按键

2、阻止浏览器上的默认行为

3、执行自定义的js函数

代码例子

document.onkeydown = function(e) {
      var keyCode = e.keyCode || e.which || e.charCode;
      var altKey = e.altKey ;
      if(altKey && keyCode == 112) {
        alert("组合键成功")
      }
      e.preventDefault();
      return false;
    }

解刨

e.keyCode || e.which || e.charCode

谷歌浏览器对event.keyCode,event.charCode和event.which都兼容。

火狐浏览器对event.keyCode部分键值有效,如上下左右键(37,38,39,40),enter键(13),PgUp(33),PgDn(34)等部分有效,对数字键,字母键无效。

event.which也是部分键值有效,如字母键,数字键,enter键,Backspace键等有效,对上下左右键,PgUp(33),PgDn(34)键无效。

event.charCode也是对部分键值有效,如字母键,数字键,,Backspace键等有效,对enter键,上下左右键,PgUp(33),PgDn(34)键无效。

ie浏览器中,IE8及以下浏览器对event.charCode无效,event.keyCode和event.which对大部分键值能获得,但是有少部分也不能获得。

所以该写法为兼容写法。

e.altKey,e.shiftKey,e.ctrlKey,e.metaKey

用来监听键盘上的alt,shift,ctrl,meta键。当按下这些键的时候,值会变为true。

e.preventDefault()

阻止默认事件,在W3C标准和IE下,处理方式不太一致。分别是执行e.preventDefault()方法和将e.returnValue = false属性。当然如果你使用的jquery等类库的话,只需要写一个e.preventDefault()就可以了,它帮你做到了兼容。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript两段代码,两个小技巧
Feb 04 Javascript
jquery attr 设定src中含有&(宏)符号问题的解决方法
Jul 26 Javascript
JS模块与命名空间的介绍
Mar 22 Javascript
基于jQuery实现下拉框
Nov 24 Javascript
jQuery实现拖动调整表格单元格大小的代码实例
Jan 13 Javascript
Javascript中获取对象的原型对象的方法小结
Feb 25 Javascript
原生js和jquery分别实现横向导航菜单效果
May 13 Javascript
react 父组件与子组件之间的值传递的方法
Sep 14 Javascript
在js代码拼接dom对象到页面上的模板总结
Oct 21 Javascript
javascript设计模式 ? 代理模式原理与用法实例分析
Apr 16 Javascript
微信小程序实现底部弹出框
Nov 18 Javascript
给原生html中添加水印遮罩层的实现示例
Apr 02 Javascript
javascript canvas检测小球碰撞
Apr 17 #Javascript
Vue实现浏览器打印功能的代码
Apr 17 #Javascript
基于JavaScript获取url参数2种方法
Apr 17 #Javascript
VSCode写vue项目一键生成.vue模版,修改定义其他模板的方法
Apr 17 #Javascript
vue fetch中的.then()的正确使用方法
Apr 17 #Javascript
如何基于filter实现网站整体变灰功能
Apr 17 #Javascript
javascript设计模式 ? 解释器模式原理与用法实例分析
Apr 17 #Javascript
You might like
国产动画《伍六七》原声大碟大卖,啊哈娱乐引领音乐赋能IP的新尝试
2020/03/08 国漫
php中设置index.php文件为只读的方法
2013/02/06 PHP
从零开始学YII2框架(一)通过Composer安装Yii2框架
2014/08/20 PHP
PHP 中魔术常量的实例详解
2017/10/26 PHP
会自动逐行上升的文本框
2006/06/30 Javascript
Jvascript学习实践案例(开发常用)
2012/06/25 Javascript
Javascript继承(上)——对象构建介绍
2012/11/08 Javascript
js的.innerHTML = ""IE9下显示有错误的解决方法
2013/09/16 Javascript
Jquery实现仿京东商城省市联动菜单
2015/11/19 Javascript
FullCalendar日历插件应用之数据展现(一)
2015/12/23 Javascript
详解react-webpack2-热模块替换[HMR]
2017/08/03 Javascript
基于angular-utils-ui-breadcrumbs使用心得(分享)
2017/11/03 Javascript
详解Vue中使用Axios拦截器
2019/04/22 Javascript
layui给下拉框、按钮状态、时间赋初始值的方法
2019/09/10 Javascript
python读取视频流提取视频帧的两种方法
2020/10/22 Python
详解Python 装饰器执行顺序迷思
2018/08/08 Python
在PyCharm下打包*.py程序成.exe的方法
2018/11/29 Python
python自动化之Ansible的安装教程
2019/06/13 Python
django mysql数据库及图片上传接口详解
2019/07/18 Python
基于h5py的使用及数据封装代码
2019/12/26 Python
css3实例教程 一款纯css3实现的发光屏幕旋转特效
2014/12/07 HTML / CSS
英国轻奢珠宝品牌:Astley Clarke
2016/12/18 全球购物
Forever 21美国官网:美国标志性快时尚品牌
2017/02/20 全球购物
Java如何获得ResultSet的总行数
2016/09/03 面试题
介绍下static、final、abstract区别
2015/01/30 面试题
后勤自我鉴定
2013/10/13 职场文书
计算机应用与科学个人的自我评价
2013/11/15 职场文书
自我评价怎么写正确呢?
2013/12/02 职场文书
军人离婚协议书样本
2014/10/21 职场文书
公积金贷款承诺书
2015/04/30 职场文书
在职证明书模板
2015/06/15 职场文书
合作意向书范本
2019/04/17 职场文书
职场新人刚入职工作总结该怎么写?
2019/05/15 职场文书
阿里云服务器搭建Php+Apache运行环境的详细过程
2021/05/15 PHP
pytorch实现手写数字图片识别
2021/05/20 Python
MySQL查看表和清空表的常用命令总结
2021/05/26 MySQL