В свою защиту я только что вернулся из двухнедельного, в основном офлайн, отпуска за границу. Поэтому я понятия не имел, что он имел в виду, когда мой друг Ройс отправил мне прямой твит:
Почему у вас нет кода конами на вашем сайте?
Теперь, в этот момент у меня была возможность быстро использовать 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
Прослушиватель событий присоединяется к объекту konami
document
Каждый раз, когда нажимается клавиша во время загрузки страницы, keydown
keycode
kkey
Затем скрипт проверяет, введен ли код Konami. Если это так, то слушатель события удаляется и раскрывается пасхальное яйцо.
Обратите внимание на использование arguments.callee
(Я написал о странном, но полезном объекте arguments
выпуске Tech Times # 215. ) Свойство callee
arguments.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 на свой сайт сегодня.