3

我想实现raptorize-Plugin但它不适用于jQuery 1.7.2,因为我认为这部分:

else if(options.enterOn == 'konami-code'){
            var kkeys = [], konami = "38,38,40,40,37,39,37,39,66,65";
            $(window).bind("keydown.raptorz", function(e){
                kkeys.push( e.keyCode );
                if ( kkeys.toString().indexOf( konami ) >= 0 ) {
                    init();
                    $(window).unbind('keydown.raptorz');
                }
            }, true);

当我使用button-version它时,它可以工作。可能是什么问题呢?

4

3 回答 3

3

http://www.zurb.com/playground/javascripts/plugins/jquery.raptorize.1.0.js的第93 行的 .bind()使用第三个参数来防止冒泡,不知道为什么当我们'重新在窗口上寻找 keydown 事件,但这就是在较新的 jQuery 版本中破坏它的原因。删除第三个参数,它将在 1.7.2 中工作。

还要确保您正确设置选项,例如:

$('.myButton').raptorize({
   'enterOn' : 'konami-code'
});
于 2012-07-23T11:11:05.793 回答
0

您可能需要考虑为此使用Mousetrap库而不是 jQuery。

上面链接的页面上甚至还有一个 Konami 代码示例,它是在一行 JS 代码中完成的。

于 2012-07-24T07:59:58.050 回答
0

自从原始 raptorize 插件发布(2010 年)以来已经有很长时间了,不幸的是,较新的 jQuery 版本打破了它。有一个更新的实现 ( https://github.com/randomvlad/raptorize-jquery ) 支持 jQuery 版本 1.7+、2.x 和 3.x 以及一些额外的改进。

具体的逻辑konami-code已经调整:

} else if (options.enterOn === 'konami-code') {
    var keysPressed = [];
    var konamiCode = "38,38,40,40,37,39,37,39,66,65";
    $(window).on("keydown.raptorz", function (e) {
        keysPressed.push(e.keyCode);

        if (keysPressed.length > 10) {
            keysPressed = keysPressed.slice(1);
        }

        if (keysPressed.toString() === konamiCode) {
            animateRaptor();
        }
    });
}

变化:

  • 将不推荐使用的 jQuery 替换bind()on().
  • 允许多次使用 konami-code。
  • 优化以仅跟踪和比较最后 10 次击键。

免责声明:我是更新后的 raptorize 2.0 插件的“作者”,该插件本身基于 ZURB 的原始插件(https://zurb.com/playground/jquery-raptorize)。

于 2021-12-22T20:48:55.990 回答