Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在单击窗口之前未检测到keydown_Javascript_Focus_Onload_Keydown - Fatal编程技术网

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

Javascript 在单击窗口之前未检测到keydown,javascript,focus,onload,keydown,Javascript,Focus,Onload,Keydown,在我的web应用程序中,我有一个打开菜单的键的事件侦听器。只有在我点击了页面上的任何地方后,它才能正常工作。我已经尝试将焦点添加到窗口onload…但这仍然不能让keydown函数运行,直到我单击页面上的某个地方 有人知道这是否可能吗?我无法想象它不是,而是.focus()不是我所尝试的goto 我的主要功能示例: document.addEventListener('DOMContentLoaded', function() { // I have tried wind

在我的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();
            }
        });
    });
希望这将有助于:

$('#adaw').keydown(函数(e){
变量o={
45:'插入',
46:‘删除’
};
日志(e.ctrlKey,e.shiftKey,e.which,o[e.which]);
$('', {
text:(e.ctrlKey?'CTRL and':'')+(e.shiftKey?'SHIFT and':'')+(o[e.which]?o[e.which]:'')+“已按下!”
}).appendTo(“#adaw”);
});
$('#adaw').focus();
在这里检查小提琴:

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

编辑: 以下是本机javascript的解决方案:

首先,如果文档没有焦点,则check_focus()函数会聚焦窗口,然后检测到按键


希望这有帮助。

因为浏览器没有焦点?@epascarello浏览器应该已经处于焦点位置。这就是为什么这是一个让我头疼的问题。虽然这是可行的,但我不想只为这一个函数包含jQuery库:/。javascript答案最适合我的问题。@SpencerMay:检查我的解决方案的最新编辑,我也用本机javascript添加了解决方案。看起来我的原始答案很有效。在阅读了你的答案后,我在一个窗口中尝试了它,但仍然不起作用……然后我在firefox中尝试了,它起了作用。我一定要用铬做衬托。我还是有点困惑。不过,谢谢你的回答。是的,你可能在chrome中关闭了javascript,这就是为什么它可能不起作用的原因。我看到过一些帖子,其中有人遇到了这个问题,其中.focus()在某些浏览器上对他们起作用,如果不起作用,则会关闭chrome或FF javascript设置,因为浏览器允许用户允许/禁止脚本聚焦或加载新窗口。
$('#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();