JavaScript 实现 Konami Code

作者:blank 来源:怿飞blog 时间:2009-05-26 12:44:00 

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

标签:JavaScript,彩蛋,快捷键
0
投稿

猜你喜欢

  • 亚马逊购物用户体验分析(三)

    2009-10-25 12:53:00
  • IE下的firebug方法

    2009-07-29 18:50:00
  • 实例学习call、apply、callee用法

    2009-03-27 17:56:00
  • 浅析阿里巴巴前端招聘考题

    2008-01-19 09:52:00
  • ASP写的不错的"数字分页"涵数

    2008-10-19 17:21:00
  • asp Access数据备份,还原,压缩类代码

    2011-03-07 11:16:00
  • 快速解决 MySQL中与浮点比较有关的问题

    2008-11-27 16:28:00
  • SQL Server性能的改进得益于逻辑数据库设计

    2009-10-23 13:55:00
  • MySQL的root帐户密码重置方法

    2007-08-24 15:53:00
  • 按钮表状态还是表动作?

    2009-03-23 18:21:00
  • js检测浏览器语种,适合于多语言版本的站点

    2007-09-12 19:16:00
  • js动态显示当前日期,时间和星期代码

    2007-08-14 12:31:00
  • asp如何让服务器延时执行更改后的数据?

    2010-05-13 16:35:00
  • 如何从ASP连接到Oracle Server?

    2009-11-15 19:52:00
  • 对用户研究实践的思考

    2010-10-19 12:21:00
  • ASP函数大全(数字函数)

    2009-06-01 12:33:00
  • CSS系统默认颜色

    2009-01-04 16:53:00
  • mysql 导入导出数据

    2011-02-23 12:27:00
  • 可以随便改别人的网页的代码

    2008-03-25 12:54:00
  • ASP中类的详细介绍(class Property Get、Property Let)

    2008-02-20 19:18:00
  • asp之家 网络编程 m.aspxhome.com