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 相关文章推荐
checkbox全选/取消全选以及checkbox遍历jQuery实现代码
Dec 02 Javascript
jquery不会自动回收xmlHttpRequest对象 导致了内存溢出
Jun 18 Javascript
javascript实现密码强度显示
Mar 18 Javascript
JS实现网页顶部向下滑出的全国城市切换导航效果
Aug 22 Javascript
javascript实现tab切换的四种方法
Nov 05 Javascript
详解Vue方法与事件
Mar 09 Javascript
详解vue父子组件间传值(props)
Jun 29 Javascript
vue实现form表单与table表格的数据关联功能示例
Jan 29 Javascript
vue轮播组件实现$children和$parent 附带好用的gif录制工具
Sep 26 Javascript
JS JQuery获取data-*属性值方法解析
Sep 01 jQuery
详解Vue2的diff算法
Jan 06 Vue.js
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
文件上传程序的全部源码
2006/10/09 PHP
php入门小知识
2008/03/24 PHP
PHP读取大文件的类SplFileObject使用介绍
2014/04/09 PHP
php防止CC攻击代码 php防止网页频繁刷新
2015/12/21 PHP
Alliance vs Liquid BO3 第二场2.13
2021/03/10 DOTA
ExtJS GTGrid 简单用户管理
2009/07/01 Javascript
最简单的jQuery程序 入门者学习
2009/07/09 Javascript
jQuery的学习步骤
2011/02/23 Javascript
yepnope.js使用详解及示例分享
2014/06/23 Javascript
js实现照片墙功能实例
2015/02/05 Javascript
小巧强大的jquery layer弹窗弹层插件
2015/12/06 Javascript
jQuery+css3实现转动的正方形效果(附demo源码下载)
2016/01/27 Javascript
基于JSON格式数据的简单jQuery幻灯片插件(jquery-slider)
2016/08/10 Javascript
基于jQuery实现滚动刷新效果
2017/01/09 Javascript
bootstrap fileinput 插件使用项目总结(经验)
2017/02/22 Javascript
JavaScript中最常见的三个面试题解析
2017/03/04 Javascript
Vue 莹石摄像头直播视频实例代码
2018/08/31 Javascript
vue组件定义,全局、局部组件,配合模板及动态组件功能示例
2019/03/19 Javascript
解决vue中使用proxy配置不同端口和ip接口问题
2019/08/14 Javascript
微信小程序移动拖拽视图-movable-view实例详解
2019/08/17 Javascript
JavaScript进阶(二)词法作用域与作用域链实例分析
2020/05/09 Javascript
Django的session中对于用户验证的支持
2015/07/23 Python
python+selenium打印当前页面的titl和url方法
2018/06/22 Python
Python使用pickle模块报错EOFError Ran out of input的解决方法
2018/08/16 Python
python实现祝福弹窗效果
2019/04/07 Python
Python使用微信itchat接口实现查看自己微信的信息功能详解
2019/08/22 Python
python 常用日期处理-- datetime 模块的使用
2020/09/02 Python
python 将Excel转Word的示例
2021/03/02 Python
CSS的pointer-events属性详细介绍(作用和注意事项)
2014/04/23 HTML / CSS
意外伤害赔偿协议书范文
2014/09/23 职场文书
英语演讲开场白
2015/05/29 职场文书
《小乌鸦爱妈妈》教学反思
2016/02/19 职场文书
导游词之河北邯郸
2019/09/12 职场文书
JS监听Esc 键触发事键
2021/04/14 Javascript
python使用PySimpleGUI设置进度条及控件使用
2021/06/10 Python
SQL解决未能删除约束问题drop constraint
2022/05/30 SQL Server