在单击窗口之前未检测到keydown

问题描述 投票:2回答:2

在我的Web应用程序中,我有一个用于打开菜单的键的事件监听器。只有在我点击页面上的任何地方后,这才能正常工作。我试图将焦点添加到窗口onload ...但是这仍然不会让keydown函数运行,直到我点击页面上的某个地方。

有谁知道这是否可能?我无法想象它不是,但.focus();不是我尝试的goto

我的主要功能示例:

    document.addEventListener('DOMContentLoaded', function() {
        // I have tried window.focus(); and window.document.focus(); 
        document.addEventListener('keydown', function(event) {
            var key = event.keyCode;
            if (key == 36) {
                toggleMenu();
                event.preventDefault();
            }
        });
    });
javascript focus onload keydown
2个回答
0
投票

在这里查看这个小提琴:fiddle

使用$(window).focus();(使用jquery)

编辑:这是本机javascript中的解决方案:fiddle

首先,如果文档没有焦点,则check_focus()函数将重点放在窗口上,然后检测按键。

希望这可以帮助。


0
投票

希望这会有所帮助:

http://jsfiddle.net/yL67u5th/1/

$('#adaw').keydown(function (e) {
    var o = {
        45: 'INSERT',
        46: 'DELETE'
    };

    console.log(e.ctrlKey, e.shiftKey, e.which, o[e.which]);

    $('<div/>', {
        text: (e.ctrlKey ? 'CTRL and ' : '') + (e.shiftKey ? 'SHIFT and ' : '') + (o[e.which] ? o[e.which] : '') + ' was pressed!'
    }).appendTo('#adaw');

});
$('#adaw').focus();    
© www.soinside.com 2019 - 2024. All rights reserved.