我有一个简单的下拉菜单,只要你点击页面上的任何地方(而不是菜单上),我就想隐藏它。这在FF和IE中工作正常,直到您将iFrame添加到页面中。单击iFrame时,菜单不会隐藏在IE中。在FireFox中正常工作。
我尝试使用document.onclick和window.onclick。
有什么想法吗?
编辑: 我宁愿不必向iframe添加任何内容。该页面是动态的,并且在创建菜单后可以加载不同的iframe。不得不经常观察新的iFrame并将事件附加到它们将是一件麻烦/不可取的事。 是的我知道jQuery.live,但我们不使用jQuery。
我认为这种行为是可行的,因为它适用于FireFox,我只是觉得我可能只是将侦听器附加到错误的事件类型或错误的元素。
答案 0 :(得分:1)
在父页面上,您可以在页面中搜索iFrame,并为其添加onfocus
事件。当用户在框架内点击时,将触发该事件。
答案 1 :(得分:1)
另一种方法是让自下拉菜单在鼠标或焦点开启后经过一段时间后消失,而不需要点击即可将其关闭。
答案 2 :(得分:1)
click
个事件向所有者window
冒泡,不再发生。如果您希望父window
了解其他框架内内容的点击次数,则必须在其window
/ document
上捕获事件(或让子文档抓住点击并通知其父文件)。是的,这将是一个麻烦,jQuery live
无论如何都不会起作用,因为它依赖于事件冒泡。
替代方法:当你打开一个下拉菜单时,还要在它后面打开一个透明的“阴影”div(但在页面上包括iframe在内的所有其他内容前面),然后点击阴影点击以关闭下拉列表。