在 Facebook 上有一个彩蛋:

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

Facebook 上有一个彩蛋

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

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 上尝试下此“秘技”,一般人我还不告诉他,嘿嘿。



共有28 条评论

  1. 1. 头像 释然

    顶~

  2. 2. 头像 Aluan

    是挺有意思的。

  3. 3. 头像 angelscat

    顶~没事在自己博客弄个,hoho~

  4. 4. 头像 cssrain

    最近看了几个这样的东东,jquery的,mootools的

    暂时没想到用到哪里。

    刚刚在google reader里试了下,神奇。 一个卡通图背景。呵呵

  5. 5. 头像 天堂左我往右

    太有意思了…

  6. 6. 头像 MakLu

    啊,竟然才知道Greader的这玩意 …… 感谢blank老师

  7. 7. 头像 柴鸡不柴

    好玩 刚照着做了一个

  8. 8. 头像 converter

    哈哈,有趣有趣,我也去试试看!

  9. 9. 头像 风过留枫

    前两天在James Padolsey的文章里也看到了一个实现,感觉封装得更好些,一并加进来给大家参考。

  10. 10. 头像 cc

    挺有趣的
    我觉得直接用索引不直接操作数组应该更有效率

  11. 11. 头像 龙子

    不行啊?

  12. 12. 头像 龙子

    额,有了!

  13. 13. 头像 zman

    Jan Jarfalk 代码真是小巧,牛B。

  14. 14. 头像 hafeyang

    google reader 也有这样的功能!

  15. 15. 头像 netwjx

    Jan Jarfalk这个代码 应该在需要的时候把多余的清除掉吧

    或者实现一个超出部分自动丢弃最早数据的容器

  16. 16. 头像 bigCat

    貌似那个短代码… 成功激发后,继续按键,任意键都会再次激发….

  17. 17. 头像 uyou

    我怎么打不出来呢~~~

  18. 18. 头像 蓝雨

    // 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;

    这样就可以了!

  19. 19. 头像 angelscat

    确实,看来成功之后要重置数组。

  20. 20. 头像 翅膀会飞

    我的怎么不行啊

  21. 21. 头像 sqq

    哈哈,秘技不完整少了B A

  22. 22. 头像 kaysnoopy

    呵呵。这个我今天在台湾的一个博客看到了。不错呢。

  23. 23. 头像 kaysnoopy

    您的评论正在穿越伟大的GFW……

    OMG,竟然还是美国主机。。

  24. 24. 头像 oliex

    不知道有没有什么办法可以多添加几个彩蛋,比如键入love会出现心形图片,键入birthday会有蛋糕出现。

  25. 25. 头像 cuikai

    马上杀去GOOGLE READER….

  26. 26. 头像 an9

    纯技术贴,路过。

  27. 27. 头像 edielei

    呵呵,不错。真有趣!

  28. 28. 头像 我叫坦然

    支持楼主一个,新手上路,多多指导

发表评论

(必填)

(必填,会为您保密)

评论仅支持“a、abbr、strong、em、blockquote、code”几个简单的标签