


Introduction détaillée du plug-in d'écoute d'événements de combinaison de touches JS
Mar 01, 2017 pm 02:34 PM<script type="text/javascript"> (function(){ /** *dqKeys v1.0.0 | (c) 2016 www.findme.wang *@params json keys 监听的按键 *@params bool isOrder 按键是否有相应的顺序 *@params Function sucFuc 完成按键的回调函数 *@params Function cancelFuc 完成按键取消后的回调函数 *@author lidequan */ var dqKeys = function(keys,isOrder,sucFuc,cancelFuc) { // 函数体 return new dqKeys.fn.init(keys,isOrder,sucFuc,cancelFuc); } dqKeys.fn = dqKeys.prototype = { 'version':'1.0.0', //版本号 'author':'lidequan', //作者 'rightKeys':{}, //监听的按键{key:code},code为按键对应的ascii码 'curKeys':[], //当前按下的键 'sucFuc':null, //完成按键的回调函数 'cancelFuc':null, //完成按键取消后的回调函数 'isFinsh':false, //判断是否完成按键 'isOrder':false, //按键是否有相应的顺序 init:function(keys,isOrder,sucFuc,cancelFuc){ this.rightKeys=keys; this.sucFuc=sucFuc; this.cancelFuc=cancelFuc; this.isOrder=isOrder; return this; }, listenkeys:function(){//监听用户键盘操作 var _self=this; _self.addListener('keydown', function(oEvent){ var oEvent =oEvent || window.event; if(!_self.arrayContain(_self.curKeys,oEvent.keyCode)){ if(_self.isOrder && _self.getNextKey() == oEvent.keyCode){ _self.curKeys.push(oEvent.keyCode); }else if(!_self.isOrder){ _self.curKeys.push(oEvent.keyCode); } } if(_self.checkResult(_self.rightKeys,_self.curKeys)){ if(_self.sucFuc && !_self.isFinsh){ _self.sucFuc(); } _self.isFinsh=true; } }); _self.addListener('keyup', function(oEvent){ var oEvent =oEvent || window.event; if(_self.checkResult(_self.rightKeys,_self.curKeys) && _self.isFinsh){ //完成按键,又取消的事件 if(_self.cancelFuc){ _self.cancelFuc(); } } _self.curKey=_self.remove(_self.curKeys,oEvent.keyCode); _self.isFinsh=false; }); }, arrayContain:function(arr,val){//判断数组中是否包含某个元素 return (arr.indexOf(val) == -1) ? false:true; }, checkResult:function(json,arr){ //判断用户是否按下监听的所有按键 for(var i in json){ if(arr.indexOf(json[i])==-1){ return false; } } return true; }, remove:function(arr,val) { //从数组中移除某个元素 var index = arr.indexOf(val); if (index > -1) { arr.splice(index, 1); } return arr; }, getNextKey:function(){ //获取下一次按键对应的ascii码 for(var i in this.rightKeys){ if(this.curKeys.indexOf(this.rightKeys[i])==-1){ return this.rightKeys[i]; } } return null; }, addListener:function(ev,fn,bool){ //事件绑定 if (document.attachEvent) { document.attachEvent('on' + ev, fn); }else{ document.addEventListener(ev,fn,bool); } } } dqKeys.fn.init.prototype = dqKeys.fn; window.dqKeys = window.$$= dqKeys; })(); //1.测试 dqKeys({'a':65,'b':66},true,function(){ console.log('okey'); },function(){ console.log('cancel'); }).listenkeys(); //2.测试 var dqKeys=new $$({'c':67,'d':68},false,function(){ console.log('keys down '); },function(){ console.log('keys cancel'); }); dqKeys.listenkeys(); </script>
Ce qui précède est l'introduction détaillée du plug-in de surveillance des événements de combinaison de touches JS. Pour plus de contenu connexe, veuillez faire attention au chinois PHP. site Web (www.php.cn) !

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Comment mettre en œuvre un système de reconnaissance vocale en ligne à l'aide de WebSocket et JavaScript

WebSocket et JavaScript : technologies clés pour mettre en œuvre des systèmes de surveillance en temps réel

Comment mettre en œuvre un système de réservation en ligne à l'aide de WebSocket et JavaScript

Comment utiliser JavaScript et WebSocket pour mettre en œuvre un système de commande en ligne en temps réel

Tutoriel JavaScript simple : Comment obtenir le code d'état HTTP

JavaScript et WebSocket : créer un système efficace de prévisions météorologiques en temps réel

Comment utiliser insertBefore en javascript

Comment obtenir facilement le code d'état HTTP en JavaScript
