在没有输入框的情况下输入后,是否有更好的方法来进行页面重定向?

时间:2017-05-17 19:47:13

标签: javascript

到目前为止,我已经提出了这个代码......如果没有输入框或点击输入/点击内容,有更好的方法吗?我打算这是一个复活节彩蛋,但它非常大,看起来有点令人沮丧。

<!-- 7H3 F0110W1N6 R3D1R3C7S 7H3 P463 WH3N 7H3 C0RR3C7 C0D3 1S 3N73R3D -->
<!-- THE FOLLOWING REDIRECTS THE PACE WHEN THE CORRECT CODE IS ENTERED -->
<!-- THE CODE IS: UP UP DOWN DOWN LEFT RIGHT LEFT RIGHT B A S -->
<script>
    document.addEventListener('keydown', function(event) {
if(event.keyCode == 38) {
        document.addEventListener('keydown', function(event) {
    if(event.keyCode == 38) {
        document.addEventListener('keydown', function(event) {
        if(event.keyCode == 40) {
            document.addEventListener('keydown', function(event) {
            if(event.keyCode == 40) {
                document.addEventListener('keydown', function(event) {
                if(event.keyCode == 37) {
                    document.addEventListener('keydown', function(event) {
                    if(event.keyCode == 39) {
                        document.addEventListener('keydown', function(event) {
                        if(event.keyCode == 37) {
                            document.addEventListener('keydown', function(event) {
                            if(event.keyCode == 39) {
                                document.addEventListener('keydown', function(event) {
                                if(event.keyCode == 66) {
                                    document.addEventListener('keydown', function(event) {
                                    if(event.keyCode == 65) {
                                        document.addEventListener('keydown', function(event) {
                                        if(event.keyCode == 83) {
                                            alert('CODE ENTERED');
                                            window.location = "NEW WEB ADRESS"
                                        }
                                    });
                                    }
                                });
                                }
                            });
                            }
                        });
                        }
                    });
                    }
                });
                }
            });
            }
        });
        }
    });
    }
});  
}
});
</script>

5 个答案:

答案 0 :(得分:1)

可以通过一个监听器来完成此操作。

import boto3
s3 = boto3.resource('s3')
for bucket in s3.buckets.all():
    print(bucket.name)

答案 1 :(得分:1)

我会这样做。

  • 1个事件监听器。
  • 没有弃用的代码(keyCode is deprecated)。
  • 没有内存泄漏。
  • 如果已启用大写锁定,则可以使用。
  • 如果输入了错误的密钥,则允许重新启动。
  • 可读代码。

&#13;
&#13;
var keys = [
    'ArrowUp',
    'ArrowUp',
    'ArrowDown',
    'ArrowDown',
    'ArrowLeft',
    'ArrowRight',
    'ArrowLeft',
    'ArrowRight',
    'b',
    'a'
];
var keyed = 0;

window.addEventListener('keydown', function(e) {
    if (keys[keyed].toLowerCase() === e.key.toLowerCase()) {
        keyed++;
    }
    else {
        keyed = 0;
    }
    if (keyed >= keys.length) {
        keyed = 0;
        console.log('Code entered!');
    }
});
&#13;
&#13;
&#13;

答案 2 :(得分:0)

您可以将密钥保存在一个数组中并弹出第一个项目(如果已输入)。因此,您可以保持优先顺序。

var secretKeys = [38, 38, 40, 40, 37, 39, 37, 39, 66, 65, 83];

document.addEventListener('keydown', function(event) {
  input = event.keyCode;
  if(input === secretKeys[0]) {
    secretKeys.shift();
    if (secretKeys.length == 0) {
      alert('You entered the secret key');
      window.location = "NEW WEB ADRESS";
    }
  }
});

答案 3 :(得分:0)

我不确定您是否知道,但每次在初始解决方案中按键时,您都会添加越来越多的事件监听器。这是非常不必要和不切实际的,因为只用一个就可以实现相同的解决方案。

您的代码中的错误是您将网址分配给window.location而不是window.location.href

编辑:分配到window.locationwindow.location.href都是正确的,并产生相同的结果。

&#13;
&#13;
const codes = [38, 38, 40, 40, 37, 39, 37, 39, 66, 65, 83];
let codeIndex = 0;

document.addEventListener("keydown", (event) => {
  console.log(event.keyCode);
  if (event.keyCode != codes[codeIndex++]) {
    codeIndex = 0; // wrong code, reset
  }
  if (codeIndex == codes.length) {
    alert("CODE ENTERED"); // success!
    // window.location.href = "NEW WEB ADDRESS";
  }
});
&#13;
p {
  font-family: Arial, sans-serif;
  font-size: 1em;
  line-height: 1.25em;
}

key {
  display: inline-block;
  padding: 0 0.5em;
  border: 1px solid #ccc;
  border-radius: 0.25em;
  background-color: #eee;
  font-family: monospace;
}
&#13;
<p>Focus on this snippet and enter the code to trigger the alert:
  <key title="Up">&uarr;</key>
  <key title="Up">&uarr;</key>
  <key title="Down">&darr;</key>
  <key title="Down">&darr;</key>
  <key title="Left">&larr;</key>
  <key title="Right">&rarr;</key>
  <key title="Left">&larr;</key>
  <key title="Right">&rarr;</key>
  <key title="B">B</key>
  <key title="A">A</key>
  <key title="S">S</key>
</p>
&#13;
&#13;
&#13;

答案 4 :(得分:0)

您可以跟踪输入的代码并在一段时间后重置它,或者当长度超过Konami代码长度时,如果用户可以重新开始而无需刷新页面。

{{1}}