Javascript 为什么引导下拉调用window.onfocus

Javascript 为什么引导下拉调用window.onfocus,javascript,jquery,twitter-bootstrap,Javascript,Jquery,Twitter Bootstrap,当我们点击bootstrap下拉链接时,会调用自定义setwindow.onfocus 为什么引导调用window.onfocus方法 <ul class="nav navbar-nav navbar-right"> <li data-ng-show="userName" class=""> <a href="javascript://" class="dropdown-toggle" data-toggle="dropdown" aria-expand

当我们点击bootstrap下拉链接时,会调用自定义set
window.onfocus

为什么引导调用
window.onfocus
方法

<ul class="nav navbar-nav navbar-right">
  <li data-ng-show="userName" class="">
    <a href="javascript://" class="dropdown-toggle" data-toggle="dropdown" aria-expanded="false">name<span class="caret"></span></a>
    <ul class="dropdown-menu" role="menu">
      <li><a href="#">Logout</a></li>
    </ul>
  </li>
</ul>


当我们单击菜单时,将显示警报消息。

因为引导会在单击的下拉锚上触发一个
焦点事件。这个事件自然会在DOM树中出现气泡,直到它到达窗口并调用您的功能为止

您可以使用
event.stopPropagation()
来防止这种情况:


因为引导会在单击的下拉锚上触发一个
焦点
事件。这个事件自然会在DOM树中出现气泡,直到它到达窗口并调用您的功能为止

您可以使用
event.stopPropagation()
来防止这种情况:


Window.onfocus将自身绑定到窗口对象,并由所有焦点事件触发,因为它们会在DOM树中冒泡。单击下拉列表时的焦点事件与单击窗口时的焦点事件不同。您可以在查看的控制台时看到这一点


onfocus将自身绑定到窗口对象,并由所有焦点事件触发,因为它们会在DOM树中冒泡。单击下拉列表时的焦点事件与单击窗口时的焦点事件不同。您可以在查看的控制台时看到这一点


为什么你认为这是引导,而不仅仅是浏览器触发了onfocus,因为你聚焦了页面?@epascarello否,你可以检查它是引导调用onfocus,就像你在jsfiddle的结果窗口中点击空闲区域时,它调用了警报一样。点击警报框中的确定。现在再次点击空闲区域,没有弹出窗口。。。现在点击下拉菜单,弹出窗口为什么你认为它是引导,而不仅仅是浏览器触发onfocus,因为你聚焦了页面?@epascarello No,您可以选中它Yes bootstrap calling onfocus,因为当您在JSFIDLE的结果窗口中单击空闲区域时,它会调用警报。单击警报框上的ok。现在再次单击空闲区域,无弹出窗口。。。现在点击下拉菜单,弹出窗口只是想知道为什么引导程序需要在屏幕上触发
focus
事件dropdown@user2410148这样你和我可以在需要的时候赶上比赛。一个正常的
select
下拉列表将触发一个
focus
事件,引导程序所做的所有尝试都是尽可能地模拟这个行为。只是好奇为什么引导程序需要在屏幕上触发
focus
事件dropdown@user2410148这样你和我可以在需要的时候赶上比赛。正常的
select
下拉列表将触发
focus
事件,引导程序所做的所有尝试都是尽可能地模拟此行为。
window.onfocus = function() {
  alert("window onfocus called");
}
jQuery(function($){
    $('.dropdown-toggle').focus(function(e){
        e.stopPropagation();
    });
});
window.onfocus = function(e) {
  console.log(e);
}