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
投稿

猜你喜欢

  • Python 命令行非阻塞输入的小例子

    2023-12-09 19:48:29
  • vue中的 $slot 获取插槽的节点实例

    2024-04-30 10:26:58
  • 详解python中xlrd包的安装与处理Excel表格

    2021-10-23 06:06:59
  • Python Pandas教程之series 上的转换操作

    2023-08-16 22:20:50
  • PHP中使用addslashes函数转义的安全性原理分析

    2023-08-16 10:31:22
  • Python绘制散点密度图的三种方式详解

    2021-12-07 00:21:04
  • python文件读写代码实例

    2023-08-09 19:29:52
  • javascript 获取中文字符串长度

    2009-10-18 12:06:00
  • javascript中var与let、const的区别详解

    2024-05-09 15:07:32
  • Python yield 使用浅析

    2022-01-09 03:56:50
  • Windows下MySQL8.0.18安装教程(图解)

    2024-01-24 13:14:59
  • MySQL错误提示:sql_mode=only_full_group_by完美解决方案

    2024-01-17 02:50:18
  • python文件与路径管理方法

    2022-06-15 13:38:06
  • Vue中的 DOM与Diff详情

    2023-07-02 16:32:37
  • BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种)

    2024-04-18 09:39:33
  • vuex 第三方包实现数据持久化的方法

    2024-04-30 10:34:56
  • Python通过RabbitMQ服务器实现交换机功能的实例教程

    2023-08-24 01:15:19
  • 一文搞懂MySQL XA如何实现分布式事务

    2024-01-22 23:25:19
  • SQL Server中的逻辑函数介绍

    2024-01-20 06:20:37
  • 如何实现让每句话的头一个字母都大写?

    2010-05-24 18:26:00
  • asp之家 网络编程 m.aspxhome.com