在 Facebook 上有一个彩蛋:
登录 facebook.com ,点击你首页的任何地方,键盘输入 Up, Up, Down, Down, Left, Right, Left, Right, B, A, Enter 后,再点击页面或滚动一下滚动条,你会发现特殊的变化(如下图),嘿嘿 ^^

玩过“魂斗罗”的朋友,肯定一眼就能看出输入的字符原来就是“魂斗罗”中的“秘技”。其实“秘技”的术语叫 Konami Code,详细见图示:

那如何用 JavaScript 也在自己的页面上添加一个类似的彩蛋呢?
Abhi 在 《Konami Code on Facebook : How to implement it on your site》 一文中提供了大体思路:
var $ = {
enabled: false,
tmp: Array(),
_konamiCode: Array(65,66,39,37,39,37,40,40,38,38),
init: function() {
this.tmp = Array(65,66,39,37,39,37,40,40,38,38);
},
konamiCode: function(e) {
if(!this.enabled) {
var t = this.tmp.pop();
if((e.keyCode-t) == 0) {
if(this.tmp.length == 0) {
this.enabled = true;
}
} else {
this.init();
}
} else {
this.action();
}
},
// Change the action() function to whatever you want to
action: function() {
//alert("Konami Code Activated");
}
}
然后在 load 的时候调用 $.init() 方法,在 keydown 的时候调用 $.konamiCode(event) 方法。
不过 Abhi 的方法还是冗余了点,Jan Jarfalk 在留言中提供了一个短小精悍的代码:
// Tweetable Konami code
var k=[];
function(e){
k.push(e.keyCode);
if(k.toString().indexOf("38,38,40,40,37,39,37,39,66,65")>=0) {
//alert("Konami Code Activated");
}
}
PS:有兴趣的还可以在 Google Reader 上尝试下此“秘技”,一般人我还不告诉他,嘿嘿。


共有31 条评论
顶~
是挺有意思的。
顶~没事在自己博客弄个,hoho~
最近看了几个这样的东东,jquery的,mootools的
暂时没想到用到哪里。
刚刚在google reader里试了下,神奇。 一个卡通图背景。呵呵
太有意思了…
啊,竟然才知道Greader的这玩意 …… 感谢blank老师
好玩 刚照着做了一个
哈哈,有趣有趣,我也去试试看!
前两天在James Padolsey的文章里也看到了一个实现,感觉封装得更好些,一并加进来给大家参考。
挺有趣的
我觉得直接用索引不直接操作数组应该更有效率
不行啊?
额,有了!
Jan Jarfalk 代码真是小巧,牛B。
google reader 也有这样的功能!
Jan Jarfalk这个代码 应该在需要的时候把多余的清除掉吧
或者实现一个超出部分自动丢弃最早数据的容器
貌似那个短代码… 成功激发后,继续按键,任意键都会再次激发….
我怎么打不出来呢~~~
// Tweetable konami code
function konami(e){
if(typeof window.k==”undefined”){
window.k=”";
}
var e = e || event;
window.k+=e.keyCode + “,”;
if(window.k==”38,38,40,40,37,39,37,39,66,65″) {
alert(“Konami Code Activated”);
window.k=”";
}
}
document.onkeydown=konami;
这样就可以了!
确实,看来成功之后要重置数组。
我的怎么不行啊
哈哈,秘技不完整少了B A
呵呵。这个我今天在台湾的一个博客看到了。不错呢。
您的评论正在穿越伟大的GFW……
OMG,竟然还是美国主机。。
不知道有没有什么办法可以多添加几个彩蛋,比如键入love会出现心形图片,键入birthday会有蛋糕出现。
马上杀去GOOGLE READER….
纯技术贴,路过。
呵呵,不错。真有趣!
支持楼主一个,新手上路,多多指导
[...] 来源:planabc.net 这篇文章发表 2009年05月22号 at 20:03, 被分类于Javascript/Ajax/Actionscript, Tags:Javascript/Ajax/Actionscript, Konami Code, 彩蛋.您可以通过订阅 RSS feed 跟踪对这篇文章的评论. 也可以发表您的评论 或者在您自己的网站中: 引用(trackback). [...]
不错不错。。。收了
这个其实可以做成一个DFA。方法见CLRS。效率是O(1) 每次按键。