代码之家  ›  专栏  ›  技术社区  ›  Nasser Hadjloo

如何为大型应用程序启用键盘导航

  •  1
  • Nasser Hadjloo  · 技术社区  · 14 年前

    此外,用户必须能够更改任何快捷方式(此时无需更改,但必须更改)

    那么如何为我的应用程序启用键盘导航呢?

    1 回复  |  直到 10 年前
        1
  •  2
  •   David Hellsing    14 年前

    下面是我在jQuery中为另一个项目编写的几个助手。

    App = {
        doStuff : function() {
            // a custom action
        },
        attachKeyboard : function(map) {
            jQuery(document).bind('keydown', {map: map, scope: this}, this.keyNav);
        },
        detachKeyboard : function(map) {
            jQuery(document).unbind('keydown', this.keyNav);
        },
        keyNav : function(e) {
            var key = e.keyCode || e.which;
            var map = e.data.map;
            var scope = e.data.scope;
            var keymap = {
                UP: 38,
                DOWN: 40,
                LEFT: 37,
                RIGHT: 39,
                RETURN: 13,
                ESCAPE: 27,
                BACKSPACE: 8
            };
            for( var i in map ) {
                var k = i.toUpperCase();
                if ( keymap[k] ) {
                    map[keymap[k]] = map[i];
                }
            }
            if (typeof map[key] == 'function') {
                map[key].apply(scope);
            }
        }
    }
    

    像这样使用:

    App.attachKeyboard({
        up: this.doStuff,
        down: function() {
            // some other action
        },
        16: function() {
            // do stuff when charcode 16 is pressed
        }
    });
    

    App.detachKeyboard();
    App.attachKeyboard({
        up: function() {
            // do stuff
        }
    });