Javascript 我能用event.keyCode得到一个句子吗?
我正试图为我的网站制作一个复活节彩蛋,我制作了javascript代码。但这对我不起作用 我试图通过键入c触发event.keyCode,输出正常。(正常工作)但是,当我尝试使用全字(css)时,它不工作Javascript 我能用event.keyCode得到一个句子吗?,javascript,Javascript,我正试图为我的网站制作一个复活节彩蛋,我制作了javascript代码。但这对我不起作用 我试图通过键入c触发event.keyCode,输出正常。(正常工作)但是,当我尝试使用全字(css)时,它不工作 <!DOCTYPE html> <html onkeydown="function(event)"> <head> </head> <body> <script> function function(event){
<!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
。您可以在这里通过开关语句找到问题的直接答案:谢谢您的回答。听到这些对我帮助很大!如果您发现这是正确的解决方案,请接受此答案,这样它就不再显示为未回答。