我希望用户按下特定的键序列后,表单输入变得可见。有一个简单的解决方案吗?可能吗有什么我应该注意的注意事项吗?
我认为在我的代码中隐藏一些复活节彩蛋以供其他开发人员查找可能很有趣。
我想到的是一种可选的表单输入,只有在按顺序按下一系列按键时才能显示(例如单词“ reveal”或方向输入模式)。我想要一种可以检测到模式的方法,而不管焦点在哪个元素上。
在寻找解决方案并阅读了this Medium article之后,很明显的是,尽管这个问题听起来很简单,但它可能是一个巨大的,费时的错误,我将为此付出很多时间后悔。
检测用户键盘输入是一回事,但是检查每个连续的击键顺序是否正确并不符合我的意愿。
对于有此问题的其他人:我想出了许多使用JS / jQuery的潜在备份方法,可以用来显示输入,但是没有一个接受定向输入,它们违反了我的一个或多个原始要求。 / p>
答案 0 :(得分:3)
以下代码片段可以满足您的需求:
var keypresses = [];
document.addEventListener('keyup', function(e) {
keypresses.push(e.key);
if (keypresses.slice(-3).join("") === "abc") {
alert("easter egg!");
}
});
keypresses
变量已初始化为保存键入键的历史记录。keypresses.slice(-3).join("")
abc
)检查连接的字符串。如果匹配,则将执行if
语句主体中的代码。 有趣的一面:由于我在此页上测试了代码,因此我在输入此部分时被警报打断了。 keypresses
变量。 在我键入此内容时,我的keypresses
变量中有此帖子的完整副本。 答案 1 :(得分:0)
我只是想扩展关于定期清除 keypresses 变量的最佳答案的观点,我只是通过添加第 4 行来做到这一点,我想这样按键只会记住最后 3 个(或任何长度的作弊码)是)按下的键并丢弃其他键:
var keypresses = [];
document.addEventListener('keyup', function(e) {
keypresses.push(e.key);
keypresses = keypresses.slice(-3);
if (keypresses.join("") === "abc") {
alert("easter egg!");
}
});