Ich bin extrem neu in JavaScript und weiß nicht, wo ich falsch liege. Ich möchte eine Funktion erstellen, die nach einer korrekten Reihe von keyEvents ausgeführt wird. Wenn ein Benutzer die Tasten "j", "a", "c", "o" und "b" in dieser Reihenfolge (und nur in dieser Reihenfolge) drückt, wird im Wesentlichen ein Element auf meiner Webseite sichtbar. Dieses Element wird derzeit mithilfe eines CSS-Style-Tags ausgeblendet: <div id="hideaway" style="display:none;">

<script> 

 function keyListener(event) {
	event = event || window.event; //capture the event, and ensure we have an event
    var key = event.key || event.which || event.keyCode; //find the key that was pressed
    if(key==106) { //this is for 'j'
	    document.getElementById("hideaway").style.display="block";
        event = event || window.event; //capture the event, and ensure we have an event
        var key = event.key || event.which || event.keyCode; //find the key that was pressed
		if(key==97) { //this is for 'a'
        	event = event || window.event; //capture the event, and ensure we have an event
        	var key = event.key || event.which || event.keyCode; //find the key that was pressed
			if(key==99) { //this is for 'c'
        		event = event || window.event; //capture the event, and ensure we have an event
        		var key = event.key || event.which || event.keyCode; //find the key that was pressed
				if(key==111) { //this is for 'o'
        			event = event || window.event; //capture the event, and ensure we have an event
        			var key = event.key || event.which || event.keyCode; //find the key that was pressed
					if(key==98) { //this is for 'b'
        				event = event || window.event; //capture the event, and ensure we have an event
        				var key = event.key || event.which || event.keyCode; //find the key that was pressed
        			    document.getElementById('hideaway').style.display='block';
    					
    				}
    			}
    		}
        }
    }  
}
  
document.getElementById("hideaway").addEventListener("keydown", keyListener);
</script>

Alle Kommentare sind willkommen.

0
Jacob 26 Aug. 2015 im 23:40

2 Antworten

Beste Antwort

Ich habe ein Konami-Code-Osterei wie folgt implementiert:

var code = "";
window.addEventListener("keydown",function(e) {
    code = (code+String.fromCharCode(e.keyCode || e.which)).substr(-11);
    if( code == "&&((%'%'BA ") {
        window.removeEventListener("keydown",arguments.callee);
        // do stuff here
    }
},false);

Die wichtigen Dinge hier sind:

  • .substr(-11) schneidet die Eingabesequenz auf 11 Zeichen ab - in Ihrem Fall möchten Sie -5, die Länge von "jacob"
  • Buchstaben sind in Großbuchstaben. Sie sollten nach JACOB suchen
  • Oben verwendet das code die entsprechenden Zeichen für die Schlüsselcodewerte für die Pfeiltasten. In Ihrem Fall brauchen Sie nur die Buchstaben, machen Sie sich also keine Sorgen.
7
Niet the Dark Absol 27 Aug. 2015 im 14:36

Eine Möglichkeit, es zu tun:

http://codepen.io/christianpugliese/pen/GpKJXN

var PASSCODE = ['j','a','c','o','b'],
    current = 0,
    logger = document.getElementById('logger');

function keyListener(e) {
    var code = e.keyCode || e.which,
      str = String.fromCharCode(code);

    if(str === PASSCODE[current]){
        current++;
        logger.innerHTML += str;
        console.log(current, PASSCODE.length);
        if(current >= PASSCODE.length){
          console.log('voi la');
        }
  } else {
      current = 0;
      logger.innerHTML = '';
  }

}

document.addEventListener("keypress", keyListener);
1
Chris 26 Aug. 2015 im 21:10