2016-11-24 41 views
0

我试图在失去焦点时隐藏我的网站。 问题是,当我点击网站上的iframe时,它失去了焦点。为了防止出现这种情况,我使用了下面的代码,它在Chrome甚至Edge中都能很好地工作。为什么这不适用于Firefox?jQuery .blur在Firefox中不工作

jQuery(window).focus(function() { 
    jQuery("body").show(); 
}).blur(function() { 
    if(document.activeElement != (document.getElementsByTagName("iframe")[0] || document.getElementsByTagName("embed")[0])) { 
     jQuery("body").hide(); 
    } 
}); 

jQuery的(文件)。就绪并没有解决我的问题

+1

而不是activeElement你可以尝试使用.target – Troyer

回答

1

Firefox是有一些麻烦与activeElement,试试下面这段代码:

jQuery(window).focus(function(e) { 
    jQuery("body").show(); 
}).blur(function(e) { 
    if(e.target != (document.getElementsByTagName("iframe")[0] || document.getElementsByTagName("embed")[0])) { 
     jQuery("body").hide(); 
    } 
}); 

希望现在的工作。 :)

+0

感谢您的答案,但遗憾的是它还没有工作。我将一个console.log文件放到blur函数中,以查看e.target返回的内容,看起来e.target在blur操作结束后获取'iframe'参数。 所以,当我点击进入iframe时,它会记录'body',我再次点击并且记录'iframe'。 – renataedit