我想知道是否可以检测单词输入。我有两个选择:
要在输入中写入的单词,并在 Enter 时按下以触发某个命令,例如动画或转到 url。
要写在页面上任何位置的单词,例如 GTA 秘籍或一些 YouTube 复活节彩蛋。
如果我不清楚,请说,我会编辑。
我想知道是否可以检测单词输入。我有两个选择:
要在输入中写入的单词,并在 Enter 时按下以触发某个命令,例如动画或转到 url。
要写在页面上任何位置的单词,例如 GTA 秘籍或一些 YouTube 复活节彩蛋。
如果我不清楚,请说,我会编辑。
将按键监听器添加到正文,将字符附加到字符串并将其与目标单词进行比较:
var word = "hello";
var input = "";
document.body.addEventListener('keypress',function(ev){
input += String.fromCharCode(ev.keyCode);
console.log(input);
if(input == word){
alert('typed hello');
input = "";
}
});
// reset input when pressing esc
document.body.addEventListener('keyup',function(ev){
if(ev.keyCode == 27) input = "";
});
演示:
一种提升:
var seq = "rainbow"
var input = ""
window.addEventListener("keypress", function(e) {
input += String.fromCharCode(e.keyCode)
for (var i = 0; i < seq.length; i++) {
if (input[i] != seq[i] && input[i] != undefined) {
input = ""
}
}
if (input == seq) {
alert("EASTER EGG!")
input = ""
}
})
我认为使用队列更有意义,因为我们总是在每次按键后将最后 x 个字符与目标序列进行比较。
例如
var seq = 'upsidedown';
var input = '';
window.addEventListener('keypress', function(e) {
// Add the latest character to the end of the queue
input += String.fromCharCode(e.keyCode);
// If the queue is longer than the target sequence remove the first character
if(input.length > seq.length) {
input = input.substr(1);
}
// Check for a match
if(input == seq) {
alert("EASTER EGG!")
}
})