Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我能用event.keyCode得到一个句子吗?_Javascript - Fatal编程技术网

Javascript 我能用event.keyCode得到一个句子吗?

Javascript 我能用event.keyCode得到一个句子吗?,javascript,Javascript,我正试图为我的网站制作一个复活节彩蛋,我制作了javascript代码。但这对我不起作用 我试图通过键入c触发event.keyCode,输出正常。(正常工作)但是,当我尝试使用全字(css)时,它不工作 <!DOCTYPE html> <html onkeydown="function(event)"> <head> </head> <body> <script> function function(event){

我正试图为我的网站制作一个复活节彩蛋,我制作了javascript代码。但这对我不起作用

我试图通过键入c触发event.keyCode,输出正常。(正常工作)但是,当我尝试使用全字(css)时,它不工作

<!DOCTYPE html>
<html onkeydown="function(event)">
<head>
</head>
<body>
<script>    
function function(event){
    var x = event.keyCode;
    if (x == 67) {
      alert ("work");
      if (x == 83) {
        alert ("work 2");
        if (x == 83) {
          alert ("boooom");
        }
      } else {
        alert("not working");
      }
    }
  }
</script>
</body>
</html>

功能(事件){
var x=event.keyCode;
如果(x==67){
警惕(“工作”);
如果(x==83){
警惕(“工作2”);
如果(x==83){
警惕(“boooom”);
}
}否则{
警报(“不工作”);
}
}
}

正如你可以从我的代码中看到的,我希望得到“boooom”而不是不工作。我想我需要一个延迟,但我不知道如何将延迟写入脚本。

您需要跟踪信件的历史记录

每次按下该键时,将其添加到数组中,然后检查最后n个字母是否是您关心的字母

var字母=[];
功能cb(事件){
//将新字母推入数组
字母.push(事件.keyCode);
//如果有3个或更多字母,请检查最后三个字母
如果(字母长度>2){
如果(字母[letters.length-1]==83&&
字母[字母.长度-2]==83&&
字母[字母.长度-3]==67){
警惕(“boooom”);
}
}
}

文件。添加的监听器(“键控”,cb)我会选择这个:

var lastKeys = [],
    triggerWord = "css";

function easteregg(event){
    var k = event.key;
    lastKeys.push(k);
    lastKeys = lastKeys.splice(-triggerWord.length);
    console.log(lastKeys)
    if(lastKeys.join("") == triggerWord) {
      console.log("bingo!");
    }
  }
使用
event.key
而不是keyCode将获得实际字符,这使得处理更容易,假设您不需要对光标键等其他内容做出反应。尽管这些将在lastKeys数组中创建
ArrowUp
等条目,但这不太可能与触发字匹配,但是,您可能需要添加一些针对实际“字符”或其他内容的过滤

lastKeys=lastKeys.splice(-triggerWord.length)
将数组限制为最后一个x项(x=3表示触发器字“css”)

然后我们只需检查这个数组的连接内容是否与触发字匹配


也许您想添加小写字母,这样在大写字母中键入一些字母仍然会导致匹配。

首先,您应该将函数命名为除函数以外的其他名称,以防止出错;其次,您需要跟踪过去按下的键,类似以下内容:

<!DOCTYPE html>
<html onkeydown="keyPressed()">
<head>
</head>
<body>
    <script>
        var keys = '';  // Create list of keys

        function keyPressed(){
            keys += event.key;  // Add last pressed key to keys
            keys = keys.substr(-3);  // Set keys to the three newest keys
            if(keys === 'css'){  // If the last pressed keys are 'css'
                alert('boooom');  // Do easter egg
            }
        }
    </script>
</body>
</html>

变量键=“”;//创建密钥列表
功能键按下(){
keys+=event.key;//将上次按下的键添加到键
keys=keys.substr(-3);//将键设置为最新的三个键
if(keys==“css”){//如果最后按下的键是“css”
警惕('booom');//做复活节彩蛋
}
}
编辑:将onkeydown属性放在标记中可能更有意义,因为这是实际显示的内容。您还可以扩展此功能以允许多个复活节彩蛋:

<!DOCTYPE html>
<html>
<head>
</head>
<body onkeydown="keyPressed()">
    <script>
        var keys = '';  // Create list of keys

        function keyPressed(){
            keys += event.key;  // Add last pressed key to keys
            keys = keys.substr(-4);  // Set keys to the four newest keys (to free up memory)
            if(keys.substr(-4) === 'html'){  // If the last 4 pressed keys are 'html'
                alert('html');  // Do first easter egg
            }
            else if(keys.substr(-3) === 'css'){  // Else if the last 3 pressed keys are 'css'
                alert('css');  // Do second easter egg
            }
            else if(keys.substr(-2) === 'js'){  // Else if the last 2 pressed keys are 'js'
                alert('js');  // Do third easter egg
            }
        }
    </script>
</body>
</html>

变量键=“”;//创建密钥列表
功能键按下(){
keys+=event.key;//将上次按下的键添加到键
keys=keys.substr(-4);//将键设置为四个最新键(以释放内存)
if(keys.substr(-4)==“html”){//如果最后4个按下的键是“html”
警报('html');//做第一个复活节彩蛋
}
else if(keys.substr(-3)=='css'){//else如果最后3个按下的键是'css'
警报('css');//做第二个复活节彩蛋
}
else if(keys.substr(-2)=='js'){//else如果最后两个按下的键是'js'
警惕('js');//做第三个复活节彩蛋
}
}

如果您使用alert(),您需要在输入其中一个复活节彩蛋之前单击页面。

X如何可以同时等于67和83?
function(){}
是不允许的,如果您的事件处理程序函数将被多次调用,每个按键事件调用一次,则您也将丢失。你需要记住最后5个字母,然后比较它们是否是你所期望的。欢迎来到SO!你的代码中有一些拼写错误,你应该改正。此外,不鼓励使用
.keyCode
,因为它已被弃用。相反,您应该使用
.key
。您可以在这里通过
开关
语句找到问题的直接答案:谢谢您的回答。听到这些对我帮助很大!如果您发现这是正确的解决方案,请接受此答案,这样它就不再显示为未回答。