JS实现页面快捷键功能

JS实现页面快捷键功能一共分为三步:

  • 第一步:绑定onkeydown事件;
  • 第二步:阻止默认按键功能;
  • 第三步:验证键码,调用功能函数;

绑定事件

首先,实现页面快捷键我们需要用到 onkeydown事件,onkeydown 事件会在用户按下键盘时触发。

我们将其绑定到 window上:window.onkeydown

阻止默认功能

然后,通过event.preventDefault() 方法阻止掉按键原有的功能,为我们绑定上新的功能做好准备工作。

ps: 当然 event.preventDefault()使不使用 ,怎么使用视情况而定。

验证键码

最后,根据键码判断验证后调用需要绑定的功能函数。

当然,在判断之前,首先我们得知道需要绑定快捷键的键码。

获取键码

获取键码,可以网上查表,但我认为没有让浏览器告诉我们来的方便。

绑定好onkeydown事件和hotkey ()函数,并打开控制台再点击一下页面后按下需要查看键码的按键,控制台就会输出对应的键码。

    window.onkeydown = function () {console.log(event.keyCode);}

知道了对应按键的键码后,就可以通过条件判断语句验证绑定对应的功能函数。

单键快捷键

知道了按键的键码后,我们就可以实现单键快捷键功能。

例如:为F1~F12添加快捷键

         window.onkeydown = function () {event.preventDefault();// F1~F12switch(event.keyCode){case 112: console.log('f1'); break;case 113: console.log('f2'); break;case 114: console.log('f3'); break;case 115: console.log('f4'); break;case 116: console.log('f5'); break;case 117: console.log('f6'); break;case 118: console.log('f7'); break;case 119: console.log('f8'); break;case 120: console.log('f9'); break;case 121: console.log('f10'); break;case 122: console.log('f11'); break;case 123: console.log('f12'); break;}}

组合键快捷键

但知道了单键的键码,只能设置单键快捷键,设置组合键快捷键还需要使用功能键;

功能键ctrl、shift、alt分别对应event.ctrlKey、event.shiftKey、event.altKey。

它们的默认值是false,当对应的按键被按下时值变为true

知道了功能键怎么用,我们就可以设置组合键快捷键。

例如:添加ctrl + s快捷键

            // ctrl + sif(event.ctrlKey && event.keyCode === 83){console.log('保存成功'); //调用对应的功能函数}

代码示例

    window.onload = function() {window.onkeydown=function() {event.preventDefault();// F1~F12switch(event.keyCode){case 112: console.log('f1'); break;case 113: console.log('f2'); break;case 114: console.log('f3'); break;case 115: console.log('f4'); break;case 116: console.log('f5'); break;case 117: console.log('f6'); break;case 118: console.log('f7'); break;case 119: console.log('f8'); break;case 120: console.log('f9'); break;case 121: console.log('f10'); break;case 122: console.log('f11'); break;case 123: console.log('f12'); break;}console.log(event.keyCode);if(event.ctrlKey && event.keyCode === 83){console.log('保存成功');}}}

到此我们就是完整的实现了快捷键功能

如果大家还有什么其他想法,欢迎在评论区交流!

JS实现页面快捷键功能相关推荐

  1. 前端使用原生js实现全局快捷键功能

    目录 前言 一.监听键盘事件 1.开启监听 2.处理键盘事件 3.监听键盘组合键 二.销毁键盘监听事件 1.注意事项 2.销毁 总结 前言 有很多地方都需要快捷键的功能,比如在页面或者各种软件当中:当 ...

  2. js 实现页面朗读功能,利用百度语音API

    通过百度 语音接口 http://tts.baidu.com/text2audio?cuid=baiduid&lan=zh&ctp=1&pdt=311&tex= 遍历网 ...

  3. HTML页面打印功能js代码,JavaScript_js实现页面打印功能实例代码(附去页眉页脚功能代码),复制代码 代码如下: html - phpStudy...

    js实现页面打印功能实例代码(附去页眉页脚功能代码) 复制代码 代码如下: @media print{ .print {display:block;} .notPrint {display:none; ...

  4. 怎样编写html购物车结算页面,原生JS实现购物车结算功能

    原生JS实现购物车结算功能 @charset "utf-8"; *{margin:0;padding:0;list-style-type:none;} a{color:#666;t ...

  5. 七夕静态页面html,html5+CSS3+JS实现七夕言情功能代码

    因为今天8月28日就是中国的情人节-七夕,作为程序猿一枚的我就只有在家敲代码咯!但我还是有一颗脱单的心:制作了h5+css+js界面祝小伙伴们:七夕快乐 具体的功能有: 1.下雪的背景动画 2.下面的 ...

  6. Case Study: 利用JS设计高级检索功能通过PHP获取MySQL数据

    一.目标 该笔记的目的是引导读者借助WampServer平台和MySQL数据库,利用HTML/CSS/JS/PHP设计一个含有高级检索功能的数据库网页.该功能效果如图1所示.用户在文本框中输入相应内容 ...

  7. php中location.reload,js刷新页面location.reload()用法详解

    本文介绍了js刷新页面函数location.reload()的用法,有关js location.reload()函数的例子,有需要的朋友参考下. 在javascript编程中,多使用location. ...

  8. jquery、js父子页面操作总结

    jquery 父.子页面之间页面元素的获取,方法的调用 https://www.cnblogs.com/it-xcn/p/5896231.html 一.jquery 父.子页面之间页面元素的获取,方法 ...

  9. 神策数据王磊:如何用 JS 实现页面录制与回放

    本文根据神策数据资深前端研发工程师王磊<如何用 JS 实现页面录制与回放>的直播整理而成.以下为正文: 一.业务背景 对于研发来说,总是需要处理一些线上问题.To B 和 To C 企业在 ...

  10. JS判断页面控件是否可用

    JS判断页面控件是否可用[原创] 2009-12-08 16:27 如果你看到这篇文章,甚至目前正愁于该问题的困扰,希望你把这篇文章看完.至少下次不会在这个问题上浪费时间. 近期做的项目中涉及到页面控 ...

最新文章

  1. codefores 786B. Legacy(最短路,线段树优化拆点,好题)
  2. BOOL,int,float,指针变量与零值比较的if语句
  3. oracle归档原理,增加ORACLE归档位置到NFS(转)
  4. python下载了怎么打开-下载python后如何启动
  5. DELETE ADJACENT DUPLICATES FROM语句的深入研究及应用
  6. OpenGL通过Assimp加载模型
  7. redis源码阅读(1)
  8. Java 游戏自动寻路,老游戏仙境传说RO私服自动寻路求交流(含代码)
  9. 友华pt622g说明书_友华通信电信光猫 双口光纤猫PT622 这个可以设置无线吗
  10. 文件及代码代码命名规则
  11. 用HFFS实例讲解PCB蛇形天线设计技巧
  12. 【安全牛学习笔记】密码嗅探、中间人攻击
  13. python计算手机销量年增长率_python如何计算环比增长率
  14. 华为笔试题--直角三角形周长
  15. 让树莓派不再吃灰(Raspberry+Docker+Portainer+青龙面板+甜糖+网心云)
  16. EasyGBS通过GB2818下载流程结合抓包数据详细记录
  17. 「GoTeam 招聘时间」滴滴出行系统研发工程师(北京)
  18. P8588 『JROI-8』雷雨天特别行动科 java版题解
  19. 买天文望远镜必看——已知望远镜焦距、相机画幅,求视场(附代码,实时更新)
  20. 什么!这就是PCB打板!

热门文章

  1. 命令激活Windows系统
  2. jzoj3337. wyl8899的TLE
  3. Riverbed大咖纵论2018科技领域九大变化
  4. 超全汇总 | 基于Camera的3D目标检测算法综述!(单目/双目/伪激光雷达)
  5. mysql frm idb_mysql/mariadb的数据恢复。没有libdata1,只有frm和idb文件的innodb的数据恢复...
  6. “大数据”、“机器学习”、“深度学习”到底是什么?
  7. 置信区间、置信水平、边际误差
  8. Unable to import maven project: See logs for details
  9. 8、Flume 日志采集工具
  10. 音视频技术开发周刊 | 177