我想显示弹出窗口,如果用户输入文本,无论在网站上,我看到javascript有关键的侦听器,但什么是最好的方式,如果我想显示弹出窗口时,用户写“ShowMePopup”?
我写这个脚本是为了测试
window.addEventListener("keydown", function (event) {
if (event.defaultPrevented) {
return;
}
var name = event.key;
var code = event.code;
console.log(`Key pressed ${name} \r\n Key code value: ${code}`);
switch (event.key) {
case "ArrowDown":
alert('arrow down')
break;
case "Shift + S + h + o + w + Shift + M + e + Shift + P + o + p + u + p":
alert('Secret Popup')
break;
default:
return;
}
event.preventDefault();
}, true);
我已尝试添加大小写
case "Shift + S + h + o + w + Shift + M + e + Shift + P + o + p + u + p":
但是行不通,有什么办法吗?
5条答案
按热度按时间csbfibhn1#
当一个键被按下时,将它推入一个数组。然后,检查数组中最后11个项目(所需组合键的长度)是否为您的组合键:
并考虑添加额外的逻辑以保持数组的大小合理。
szqfcxe22#
你可以通过在监听器函数的外部创建一个存储变量来解决这个问题,并将每个按键事件存储在里面。但是,要注意按键的时间,因为按住shift的时间越长,就会触发多个按键事件。但是,你应该让它工作。
6ioyuze23#
您可以跟踪
keydown
事件每次出现时键入的内容,然后在预期文本和到目前为止捕获的内容之间做减法。一旦捕获偏离预期,捕获的字符串将被重置。
在键入每个字符时,演示程序将在控制台上打印预期的完整字符串,自最近一次重置以来捕获的内容以及仍然缺少的内容。
当密码被正确捕获时,函数
secretUnlocked
被触发。此解决方案不会有无限增长的缓冲区,而只有捕获的字符串,只要它与预期的输入匹配。一旦键入的字符串出现分歧,缓冲区将被重置,并使用最小的内存量。
yptwkmov4#
哇,这么多代码。
这个也行
axr492tv5#
你是说一个像这样弹出的钥匙探测器?试试这个代码。