2013-03-02 71 views
0

如果用户单击外部页面,是否可能触发事件?更具体地说,在浏览器标题栏或标签栏?单击外部页面上的触发事件

试试这个我的jsFiddle example

HTML

<div id="box"> 
    <div id="menu">Click here</div> 
    <div id="show">Hello!</div> 
</div> 

JS

jQuery('div#menu').on('click', function(ev) { 
    jQuery('div#show').addClass('visible').css({ 
     top: ev.clientY, 
     left: ev.clientX 
    }); 

    return false; 
}); 

jQuery(document).click(function() { 
    jQuery('div#show').removeClass('visible'); 
}); 

jQuery(window).blur(function() { 
    jQuery(document).click(); 
}); 

试验

首先,你点击 “点击这里” 按钮。所以......

  1. 尝试在一些文件部分点击:好
  2. 尝试在一些页面部分或无焦点的浏览器窗口中点击:好的
  3. 尝试在浏览器中的一些其他打开的选项卡点击:好吧
  4. 尝试在浏览器标题栏或分页标题点击:失败

SO ...

我可以解决这个问题吗?

测试结果

  • :失败在最后;
  • Firefox:最后失败;
  • IE10:最后一次失败;
  • Opera:最后失败;
+0

这是不可能的。 – 2013-03-02 06:30:49

+1

您的jsFiddle在Chrome 48中运行。单击当前选项卡不会关闭菜单,但单击Chrome中的另一个选项卡或单击Chrome窗口外部的按钮会关闭菜单。 – 2016-02-12 14:35:39

回答

1

很抱歉告诉你这件事,但这是不可能的。

原因?实质上,单击窗口的标题栏/标签栏并不会使元素失去焦点。

这里试试这个例子:

http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_onblur

你会发现,点击标题栏/标签栏不会使文本框失去焦点可言,这是问题的根源。

虽然我不认为这对你的项目是一个大问题。就用户而言,它现在看起来很棒。

+0

哦。感谢帮助。 :( – 2013-03-02 16:18:55