Wykrywanie serii kombinacji klawiszy z Javascriptem
Na święta wielkanocne chcę mieć małą niespodziankę „Easter Egg Hunt” na stronie, na której się rozwijam. Dwa z tych pięciuPisanki Będę się ukrywał, będzie wyświęcony na nacisk. Nie będzie to transakcja typu „Naciśnij CTRL i TAB w tym samym czasie”, ale będzie to rodzaj „trzykrotne naciśnięcie UP, a następnie PRAWO trzy razy”. Będzie szukał serii naciśnięć klawiszy zamiast tylko dwóch naciśniętych jednocześnie. Mam skonfigurowaną tę funkcję, ale z jakiegoś dziwnego powodu nie działa tak, jak powinno.
UWAGA: Poniższy skrypt szuka następujących naciśnięć klawiszy:
niespodzianka1 - LEWO (x3), PRAWO (x3), GÓRA (x3), DÓŁ (x3)
surprise2 - SHIFT (x3), TAB (x3), CTRL (x3)
<code>$(document.body).keydown(function(e) { surprise1(e); surprise2(e); }); function surprise1(e) { var ev = (e) ? e : window.event; var k = ev.keyCode; if (k > 36 && k < 41) { typekeys[k] = isNaN(typekeys[k]) ? 0 : typekeys[k]; typekeys[k]++; if (typekeys[37] == 3) { if (typekeys[37] == 3 && typekeys[39] == 3) { if (typekeys[37] == 3 && typekeys[39] == 3 && typekeys[38] == 3) { if (typekeys[37] == 3 && typekeys[39] == 3 && typekeys[38] == 3 && typekeys[40] == 3) { alert("You've found Surprise 1! Contact the site admin ASAP to get your prize!"); typekeys[37] = typekeys[39] = typekeys[38] = typekeys[40] = 0; } } else { typekeys[40] = 0; } } else { typekeys[38] = typekeys[40] = 0; } } else { if (typekeys[37] > 3) { typekeys[37] = 0; } typekeys[39] = typekeys[38] = typekeys[40] = 0; } } else { typekeys[37] = typekeys[39] = typekeys[38] = typekeys[40] = 0; } }; function surprise2(e) { var ev = (e) ? e : window.event; var k = ev.keyCode; if (k > 8 && k < 18) { typekeys[k] = isNaN(typekeys[k]) ? 0 : typekeys[k]; typekeys[k]++; if (typekeys[16] == 3) { if (typekeys[9] == 3) { if (typekeys[16] == 3 && typekeys[9] == 3 && typekeys[17] == 3) { alert("You've found Surprise 2! Contact the site admin ASAP to get your prize!"); typekeys[16] = typekeys[9] = typekeys[17] = 0; } } } else { if (typekeys[16] > 3) { typekeys[16] = 0; } typekeys[9] = typekeys[17] = 0; } } else { typekeys[16] = typekeys[9] = typekeys[17] = 0; } }; </code>
Pomyśl mi dokładnie, dlaczego to nie działa? Wydaje się, że to powinno działać.