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 极速 隐藏/显示万行表格列只需 60毫秒
Mar 28 Javascript
jquery 学习笔记 传智博客佟老师附详细注释
Sep 12 Javascript
jQuery替换字符串(实例代码)
Nov 13 Javascript
vue.js学习之递归组件
Dec 13 Javascript
vue实现列表的添加点击
Dec 29 Javascript
微信小程序 flex实现导航实例详解
Apr 26 Javascript
Angular2使用Angular CLI快速搭建工程(一)
May 21 Javascript
JS实现调用本地摄像头功能示例
May 18 Javascript
安装vue-cli的简易过程
May 22 Javascript
微信小程序scroll-view实现滚动穿透和阻止滚动的方法
Aug 20 Javascript
Ant Design Pro 下实现文件下载的实现代码
Dec 03 Javascript
jQuery 判断元素是否存在然后按需加载内容的实现代码
Jan 16 jQuery
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
114啦源码(114la)不能生成地方房产和地方报刊问题4级页面0字节的解决方法
2012/01/12 PHP
php中通过curl检测页面是否被百度收录
2013/09/27 PHP
PHP利用str_replace防注入的方法
2013/11/10 PHP
php遍历CSV类实例
2015/04/14 PHP
php微信公众号开发之图片回复
2018/10/20 PHP
Yii 框架使用Forms操作详解
2020/05/18 PHP
innertext , insertadjacentelement , insertadjacenthtml , insertadjacenttext 等区别
2007/06/29 Javascript
javascript 兼容FF的onmouseenter和onmouseleave的代码
2008/07/19 Javascript
Chrome中JSON.parse的特殊实现
2011/01/12 Javascript
页面回到顶部的三种实现(锚标记,js)
2012/10/01 Javascript
js修改地址栏URL参数解决url参数问题
2012/12/15 Javascript
jquery mobile事件多次绑定示例代码
2013/09/13 Javascript
js解决弹窗问题实现班级跳转DIV示例
2014/01/06 Javascript
单元选择合并变色示例代码
2014/05/26 Javascript
HTML页面登录时的JS验证方法
2014/05/28 Javascript
网站接入QQ登录的两种方法
2014/07/22 Javascript
基于javascript实现精确到毫秒的倒计时限时抢购
2016/04/17 Javascript
JavaScript中document.referrer的用法详解
2017/07/04 Javascript
VueJS组件之间通过props交互及验证的方式
2017/09/04 Javascript
js+html5生成自动排列对话框实例
2017/10/09 Javascript
JavaScript数据结构之栈实例用法
2019/01/18 Javascript
JavaScript常用工具方法封装
2019/02/12 Javascript
Vue 后台管理类项目兼容IE9+的方法示例
2019/02/20 Javascript
浅谈JavaScript面向对象--继承
2019/03/20 Javascript
初学vue出现空格警告的原因及其解决方案
2019/10/31 Javascript
vue 实现动态路由的方法
2020/07/06 Javascript
[51:50]完美世界DOTA2联赛 Magma vs GXR 第一场 11.07
2020/11/10 DOTA
在Python的Django框架中显示对象子集的方法
2015/07/21 Python
Python 中pandas.read_excel详细介绍
2017/06/23 Python
Linux下Python安装完成后使用pip命令的详细教程
2018/11/22 Python
django 单表操作实例详解
2019/07/30 Python
阿根廷网上配眼镜:SmartBuyGlasses阿根廷
2016/08/19 全球购物
小学生志愿者活动方案
2014/08/23 职场文书
企业培训简报范文
2015/07/20 职场文书
《钢铁是怎样炼成的》高中读后感
2019/08/07 职场文书
java解析XML详解
2021/07/09 Java/Android