Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.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
Firefox css没有';不要对javascript模糊做出反应_Javascript_Css_Firefox_Onblur - Fatal编程技术网

Firefox css没有';不要对javascript模糊做出反应

Firefox css没有';不要对javascript模糊做出反应,javascript,css,firefox,onblur,Javascript,Css,Firefox,Onblur,我通过让用户聚焦那些菜单的“标签”来切换导航子菜单。与此类似(简化代码): 现在,这在所有浏览器中都可以正常工作:标签是一个锚,因此接受焦点;点击它,菜单显示。要隐藏,请单击其他位置=模糊标签。 但是,希望再次单击标签也会隐藏菜单。所以我添加了这个脚本来覆盖正常的聚焦行为: for (var i=0; i<menu_labels.length; i++) { menu_labels[i].addEventListener('mousedown', function(e){

我通过让用户聚焦那些菜单的“标签”来切换导航子菜单。与此类似(简化代码):

现在,这在所有浏览器中都可以正常工作:标签是一个锚,因此接受焦点;点击它,菜单显示。要隐藏,请单击其他位置=模糊标签。
但是,希望再次单击标签也会隐藏菜单。所以我添加了这个脚本来覆盖正常的聚焦行为:

for (var i=0; i<menu_labels.length; i++) {
    menu_labels[i].addEventListener('mousedown', function(e){ 
        e.preventDefault();
        adjustFocus(this);
    });
}

function adjustFocus(elem) {
    if (elem === document.activeElement) {
        console.log('elem has focus, let\'s blur it'); 
        elem.blur();
    }
    else {
        console.log('elem has no focus, let\'s focus it'); 
        elem.focus();
    }
}

for(var i=0;i这似乎与我以前见过的其他Mozilla focus/blur优先级问题/bug有些关联。例如:


我建议的一种可能的解决方法是,而不是调用
elem.blur()
在上面的代码中,您将注意力集中在屏幕外或不可见的元素上,这将有效地模糊在此之前处于焦点的元素。

不确定我是否理解您的问题:我看不出FF和Chrome有什么区别。除非我们的Firefox表现不同-不,我试过您的codepen,它们是不同的:在Chrome中,您可以切换打开和关闭菜单。单击一次,菜单会折叠,单击第二次,菜单会折叠。在Firefox中,菜单会保持打开状态。你能确认你可以在FF中切换吗?在这种情况下,我的该死的FF开发者版会出问题。是的,控制台日志也会切换消息。我在windows.74.0(64位)上有最新的FF
.menu { max-height:0; }
.label:focus + .menu { max-height:200px; }
for (var i=0; i<menu_labels.length; i++) {
    menu_labels[i].addEventListener('mousedown', function(e){ 
        e.preventDefault();
        adjustFocus(this);
    });
}

function adjustFocus(elem) {
    if (elem === document.activeElement) {
        console.log('elem has focus, let\'s blur it'); 
        elem.blur();
    }
    else {
        console.log('elem has no focus, let\'s focus it'); 
        elem.focus();
    }
}