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 相关文章推荐
基于jquery的表头固定的若干方法
Jan 27 Javascript
关于jQuery中的end()使用方法
Jul 10 Javascript
用jquery生成二级菜单的实例代码
Jun 24 Javascript
等待指定时间后自动跳转或关闭当前页面的js代码
Jul 09 Javascript
利用jQuery简单实现产品展示图片左右滚动功能(示例代码)
Jan 02 Javascript
Javascript aop(面向切面编程)之around(环绕)分析
May 01 Javascript
整理AngularJS中的一些常用指令
Jun 16 Javascript
深入理解jquery自定义动画animate()
May 24 Javascript
ReactNative页面跳转实例代码
Sep 27 Javascript
Vue.js手风琴菜单组件开发实例
May 16 Javascript
基于JavaScript实现多级菜单效果
Jul 25 Javascript
JavaScript实现点击出现图片并统计点击次数功能示例
Jul 23 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
PHP 多维数组的排序问题 根据二维数组中某个项排序
2011/11/09 PHP
PHPThumb PHP 图片缩略图库
2012/03/11 PHP
php邮箱地址正则表达式验证
2015/11/13 PHP
PHP设计模式之迭代器模式
2016/06/17 PHP
php array_merge_recursive 数组合并
2016/10/26 PHP
PHP中一个有趣的preg_replace函数详解
2018/08/15 PHP
PHP序列化的四种实现方法与横向对比
2018/11/29 PHP
PhpStorm连接服务器并实现自动上传功能
2020/12/09 PHP
javascript 写的一个简单的timer
2009/07/30 Javascript
JQuery页面图片切换和新闻列表滚动效果的具体实现
2013/09/26 Javascript
javascript中apply和call方法的作用及区别说明
2014/02/14 Javascript
jQuery中:last选择器用法实例
2014/12/30 Javascript
node.js require() 源码解读
2015/12/13 Javascript
javascript精确统计网站访问量实例代码
2015/12/19 Javascript
jQuery实现点击水纹波动动画
2016/04/10 Javascript
JS+Canvas实现的俄罗斯方块游戏完整实例
2016/12/12 Javascript
jQuery日程管理控件glDatePicker用法详解
2017/03/29 jQuery
JavaScript正则表达式简单实用实例
2017/06/23 Javascript
微信小程序 websocket 实现SpringMVC+Spring+Mybatis
2017/08/04 Javascript
React-Native做一个文本输入框组件的实现代码
2017/08/10 Javascript
详解JQuery基础动画操作
2019/04/12 jQuery
js实现指定时间倒计时效果
2019/08/26 Javascript
[06:49]2018DOTA2国际邀请赛寻真——VirtusPro傲视群雄
2018/08/12 DOTA
Django中模版的子目录与include标签的使用方法
2015/07/16 Python
python学习之第三方包安装方法(两种方法)
2015/07/30 Python
Python中操作mysql的pymysql模块详解
2016/09/13 Python
浅谈flask截获所有访问及before/after_request修饰器
2018/01/18 Python
详解使用Python下载文件的几种方法
2019/10/13 Python
基于Python和PyYAML读取yaml配置文件数据
2020/01/13 Python
如何使用Python抓取网页tag操作
2020/02/14 Python
解决jupyter notebook 前面书写后面内容消失的问题
2020/04/13 Python
Python使用pycharm导入pymysql教程
2020/09/16 Python
英国领先的男装设计师服装购物网站:Mainline Menswear
2018/02/04 全球购物
JAKO-O德国野酷台湾站:德国首屈一指的婴幼童用品品牌
2019/01/14 全球购物
竞聘演讲稿范文
2014/01/12 职场文书
根德5570型九灯四波段立体声收音机是电子管收音机的楷模 ? 再论5570
2022/04/05 无线电