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 相关文章推荐
js 动态添加标签(新增一行,其实很简单,就是几个函数的应用)
Mar 26 Javascript
js实时监听文本框状态的方法
Apr 26 Javascript
sails框架的学习指南
Dec 22 Javascript
jQuery中last()方法用法实例
Jan 06 Javascript
详解JavaScript时间格式化
Dec 23 Javascript
DIV+CSS+jQ实现省市联动可扩展
Jun 22 Javascript
javascript流程控制语句集合
Sep 18 Javascript
js实现复制功能(多种方法集合)
Jan 06 Javascript
JS中的事件委托实例浅析
Mar 22 Javascript
Node.js Express安装与使用教程
May 11 Javascript
Vue 中文本内容超出规定行数后展开收起的处理的实现方法
Apr 28 Javascript
Smartour 让网页导览变得更简单(推荐)
Jul 19 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正则走开
2008/03/15 PHP
php curl 伪造IP来源的实例代码
2012/11/01 PHP
php跨站攻击实例分析
2014/10/28 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
2020/05/14 PHP
JavaScript的public、private和privileged模式
2009/12/28 Javascript
使用ExtJS技术实现的拖动树结点
2010/08/05 Javascript
jquery图片上下tab切换效果
2011/03/18 Javascript
利用jQuery操作对象数组的实现代码
2011/04/27 Javascript
NodeJS的模块写法入门(实例代码)
2012/03/07 NodeJs
JS验证邮箱格式是否正确的代码
2013/12/05 Javascript
Javascript中call的两种用法实例
2013/12/13 Javascript
jquery判断元素的子元素是否存在的示例代码
2014/02/04 Javascript
js使用for循环查询数组中是否存在某个值
2014/08/12 Javascript
让JavaScript和其它资源并发下载的方法
2014/10/16 Javascript
javascript编写贪吃蛇游戏
2015/07/07 Javascript
谈谈JavaScript自定义回调函数
2015/10/18 Javascript
跟我学习javascript的严格模式
2015/11/16 Javascript
Linux下为Node.js程序配置MySQL或Oracle数据库的方法
2016/03/19 Javascript
jQuery编写设置和获取颜色的插件
2017/01/09 Javascript
jQuery实现图片滑动效果
2017/03/08 Javascript
angular学习之ngRoute路由机制
2017/04/12 Javascript
Vue DevTools调试工具的使用
2017/12/05 Javascript
jQuery实现带3D切割效果的轮播图功能示例【附源码下载】
2019/04/04 jQuery
Python中字典映射类型的学习教程
2015/08/20 Python
python 性能提升的几种方法
2016/07/15 Python
在Python中定义一个常量的方法
2018/11/10 Python
Python解决两个整数相除只得到整数部分的实例
2018/11/10 Python
Django 自定义分页器的实现代码
2019/11/24 Python
浅谈Pytorch torch.optim优化器个性化的使用
2020/02/20 Python
Python super()方法原理详解
2020/03/31 Python
python针对Oracle常见查询操作实例分析
2020/04/30 Python
Python3以GitHub为例来实现模拟登录和爬取的实例讲解
2020/07/30 Python
瑞典时尚服装购物网站:Miinto.se
2017/10/30 全球购物
网站编辑求职信
2013/10/17 职场文书
财务管理专业自荐信范文
2013/12/24 职场文书
责任书格式
2015/01/29 职场文书