Статьи

Есть ли на вашем сайте код Konami?

konami-contra-cover

В свою защиту я только что вернулся из двухнедельного, в основном офлайн, отпуска за границу. Поэтому я понятия не имел, что он имел в виду, когда мой друг Ройс отправил мне прямой твит:

Почему у вас нет кода конами на вашем сайте?

Теперь, в этот момент у меня была возможность быстро использовать Google, чтобы поддерживать хрупкую шараду, которая мне нравится во всех последних мемах. Но нет, пораженный внезапной честностью, я послал менее чем звездный ответ:

Что такое кодекс Konami?

Я должен был использовать Google; мой вундеркинд в руинах. Если есть какие-либо читатели, которые еще не слышали о Кодексе Konami, то этот вопрос спасет вас от той же участи.

Я люблю пасхальные яйца на веб-сайтах; У меня извращенное влечение тратить время и силы на написание кода по совершенно бессмысленным причинам. Код Konami восходит к чит-кодам старых игр для консольных игр; комбинация клавиш «вверх», «вверх», «вниз», «вниз», влево, вправо, влево, вправо, B, A. Если вы хотите узнать больше, видео на Youtube объясняет все . Там было множество сайтов, которые внедрили пасхальное яйцо, срабатывает при вводе кода. Сайт ESPN сделал это на апрельский день дураков, а на сайте jQuery был отличный сайт, а также Google Reader и даже Facebook . Посетите сайты кодов Konami, чтобы найти список сайтов.

Я осмотрел несколько решений на основе JavaScript для реализации такого пасхального яйца и нашел очень приятный пример jQuery от Paul Irish, который демонстрирует немного JavaScript-фу. Сценарий использует прослушиватель событий для перехвата событий нажатия клавиш и отслеживания всех введенных ключей. Если комбинация нажатых клавиш содержит код Konami, то срабатывает пасхальное яйцо:

 keydown

Сценарий начинается с объявления пары переменных; var kkeys = [], konami = "38,38,40,40,37,39,37,39,66,65";
$(document).keydown(function(e) {
kkeys.push( e.keyCode );
if ( kkeys.toString().indexOf( konami ) >= 0 ){
$(document).unbind('keydown',arguments.callee);
// Launch easter egg here
}
});
и kkeys

Прослушиватель событий присоединяется к объекту konamidocument Каждый раз, когда нажимается клавиша во время загрузки страницы, keydownkeycodekkey Затем скрипт проверяет, введен ли код Konami. Если это так, то слушатель события удаляется и раскрывается пасхальное яйцо.

Обратите внимание на использование arguments.callee (Я написал о странном, но полезном объекте argumentsвыпуске Tech Times # 215. ) Свойство calleearguments.callee В этом примере это также позволяет функции прослушивателя событий оставаться анонимным.

Пасхальное яйцо на сайте Paul Irish использует услуги Cornify, очень полезного веб-сервиса для единорогов и радуг :

 $.getScript('http://www.cornify.com/js/cornify.js', function(){
  cornify_add();
  $(document).keydown(cornify_add);
});

Есть несколько других примечательных примеров, которые я нашел. У Мэтта Снайдера есть один, использующий YUI, где скрипт создает пользовательское событие, и два других простых старых примера JavaScript. Первый — konami-js, который использует таймауты для сброса процедуры обнаружения кода Konami, если между нажатиями клавиш большая задержка. Второй — это обработчик события onKonamiCode от James Padolsey.

Чего же ты ждешь? У вас есть код; добавьте код Konami на свой сайт сегодня.