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 Mobile页面跳转后未加载外部JS原因分析及解决
Mar 18 Javascript
javascript验证身份证完全方法具体实现
Nov 18 Javascript
JavaScript点击按钮后弹出透明浮动层的方法
May 11 Javascript
javascript常用方法总结
May 14 Javascript
使用jquery插件qrcode生成二维码
Oct 22 Javascript
javascript高级编程之函数表达式 递归和闭包函数
Nov 29 Javascript
JS生成不重复的随机数组的简单实例
Jul 10 Javascript
js中常用的Math方法总结
Jan 12 Javascript
使用Node.js搭建静态资源服务详细教程
Aug 02 Javascript
js匿名函数使用&传参(实例)
Sep 08 Javascript
vue中element 上传功能的实现思路
Jul 06 Javascript
vue 父组件通过v-model接收子组件的值的代码
Oct 27 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中使用register_shutdown_function函数截获fatal error示例
2015/04/21 PHP
从刷票了解获得客户端IP的方法
2015/09/21 PHP
Zend Studio使用技巧两则
2016/04/01 PHP
PHP 实现公历日期与农历日期的互转换
2017/09/13 PHP
PHP实现的大文件切割与合并功能示例
2018/04/10 PHP
jquery提示 "object expected"的解决方法
2009/12/13 Javascript
JQuery扩展插件Validate 5添加自定义验证方法
2011/09/05 Javascript
js+css实现增加表单可用性之提示文字
2013/06/03 Javascript
Jquery创建层显示标题和内容且随鼠标移动而移动
2014/01/26 Javascript
实现js保留小数点后N位的代码
2014/11/13 Javascript
JavaScript 开发工具webstrom使用指南
2014/12/09 Javascript
sails框架的学习指南
2014/12/22 Javascript
整理AngularJS框架使用过程当中的一些性能优化要点
2016/03/05 Javascript
Node.js Sequelize如何实现数据库的读写分离
2016/10/23 Javascript
jquery easyui validatebox remote的使用详解
2016/11/09 Javascript
Bootstrap路径导航与分页学习使用
2017/02/08 Javascript
nodejs实现解析xml字符串为对象的方法示例
2018/03/14 NodeJs
浅析vue中的MVVM实现原理
2019/03/04 Javascript
Vuex 模块化使用详解
2019/07/31 Javascript
Javascript幻灯片播放功能实现过程解析
2020/05/07 Javascript
Vue使用Three.js加载glTF模型的方法详解
2020/06/14 Javascript
js+for循环实现字符串自动转义的代码(把后面的字符替换前面的字符)
2020/12/24 Javascript
python使用xauth方式登录饭否网然后发消息
2014/04/11 Python
Python简单实现两个任意字符串乘积的方法示例
2018/04/12 Python
numpy中的高维数组转置实例
2018/04/17 Python
python连接打印机实现打印文档、图片、pdf文件等功能
2020/02/07 Python
Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决
2020/09/18 Python
五款漂亮的纯CSS3动画按钮的实例教程
2014/11/21 HTML / CSS
解决HTML5中滚动到底部的事件问题
2019/08/22 HTML / CSS
车工岗位职责
2013/11/26 职场文书
大学三年计划书范文
2014/04/30 职场文书
视光学专业自荐信
2014/06/24 职场文书
小学运动会演讲稿
2014/08/25 职场文书
遗失证明范文
2015/06/19 职场文书
Redis持久化与主从复制的实践
2021/04/27 Redis
详解Django的MVT设计模式
2021/04/29 Python