【问题标题】:How could I detect if there is a key press support in the browser for arrow keys?我如何检测浏览器中是否有按键支持箭头键?
【发布时间】:2015-07-03 01:47:29
【问题描述】:

我正在为填字游戏(波兰语)开发一款网页游戏 (http://szarada.net/wyscigi/)。我计划介绍的功能之一是支持使用箭头键在填字游戏图上移动光标。为了提供更多的用户体验,我希望尽可能支持箭头键的按键事件(不是按键或按键)(以便让用户通过长按键将光标移动多个字段)。

通过检查多个 Internet 资源(包括多个 StackOverflow 条目),我了解到只有部分浏览器支持箭头键的按键。

我的问题来了——如何检测浏览器是否支持为箭头键触发按键事件的功能?我正在考虑只检测浏览器(加上浏览器版本),但基于功能的解决方案显然更具可扩展性。我没有发现任何有用的东西,例如现代主义。

我正在使用 jQuery,因此基于 jQuery 的建议对我最有利。

【问题讨论】:

标签: javascript jquery events keypress arrow-keys


【解决方案1】:

实际上,keyDown 是您要查找的事件。如果用户一直按该键,它会被重复触发。

所以,不要使用 KeyPress,而是使用 KeyDown,你会在所有浏览器中都很好。

【讨论】:

  • 谢谢你,普里玛!我更改了代码并听取了按键事件。在 Chrome、FF、IE、Opera 下一切正常。但是,我没有收到我的问题的答案 - 有没有什么方法可以检测按键事件是否支持箭头键,而不仅仅是查询浏览器类型/版本并基于此得出支持。
【解决方案2】:

我知道这是从 2013 年开始的,但我不得不自己进行按键检测,因为这对我没有帮助。这是我用来解决 chrome android 不支持按键的解决方案:

    $(function () {
        "use strict";
        var keypressDetected = false;

        $('body').on('keypress', function(event) {

               keypressDetected = true;
               alert('key press supported!');

        });

        var e = jQuery.Event("keypress");

        e.which = 50; // The key code that you wish to test for

        $("body").trigger(e);

        if (!keypressDetected) {

           // ... do magic here
        }
    });

【讨论】:

    猜你喜欢
    • 2011-06-09
    • 2013-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2014-10-05
    • 2011-12-12
    相关资源
    最近更新 更多