Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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
Javascript IE未触发(窗口|文档)。单击子iFrame时单击事件_Javascript_Internet Explorer_Iframe - Fatal编程技术网

Javascript IE未触发(窗口|文档)。单击子iFrame时单击事件

Javascript IE未触发(窗口|文档)。单击子iFrame时单击事件,javascript,internet-explorer,iframe,Javascript,Internet Explorer,Iframe,我有一个简单的下拉菜单,每当你点击页面上的任何地方(而不是菜单上)时,我都想隐藏它。在将iFrame添加到页面之前,这在FF和IE中可以正常工作。当您单击iFrame时,菜单不会隐藏在IE中。在FireFox中运行良好 我尝试使用document.onclick和window.onclick 有什么想法吗 编辑: 我不想在iframe中添加任何内容。页面是动态的,创建菜单后可以加载不同的iFrame。必须不断观察新的iFrame并将事件附加到它们上,这将是一件麻烦/不可取的事情。 是的,我知道j

我有一个简单的下拉菜单,每当你点击页面上的任何地方(而不是菜单上)时,我都想隐藏它。在将iFrame添加到页面之前,这在FF和IE中可以正常工作。当您单击iFrame时,菜单不会隐藏在IE中。在FireFox中运行良好

我尝试使用document.onclick和window.onclick

有什么想法吗

编辑:
我不想在iframe中添加任何内容。页面是动态的,创建菜单后可以加载不同的iFrame。必须不断观察新的iFrame并将事件附加到它们上,这将是一件麻烦/不可取的事情。 是的,我知道jQuery.live,但我们不使用jQuery


我假设这种行为是可能的,因为它在FireFox上工作,我只是觉得我可能只是将侦听器附加到了错误的事件类型或错误的元素。

在父页面上,您可以在页面中搜索iFrame,并为它们添加一个
onfocus
事件。当用户在帧内单击时,该事件将被触发。

另一种选择是,在鼠标或焦点位于下拉菜单上一段时间后,下拉菜单将消失,而不需要单击将其取消。

单击
事件将出现在所有者的
窗口
上,不再显示。如果您想让父
窗口
了解另一个框架内内容的点击情况,则必须捕获其
窗口
/
文档
上的事件(或者让子文档捕获点击并通知其父文档)。是的,这将是一个麻烦,jQuery
live
无论如何都无法工作,因为它依赖于事件冒泡


另一种方法:当你打开一个下拉列表时,也可以在它后面打开一个透明的“shade”div(但在页面上所有其他内容的前面,包括iframe),然后点击shade关闭下拉列表。

我不希望在iframe中添加任何内容。请参阅问题的编辑。否,我的意思是尝试将此事件添加到父页面DOM中的iframe元素。我决定在显示菜单时在页面中搜索iframe,并向其添加焦点事件侦听器。谢谢是的,应该是这样。您对特定的浏览器/版本有问题吗?好主意,但仍然不是我想要的功能。谢谢,这可能会成为一种解决方法。这确实有一个缺点,那就是禁用页面中的其他UI元素来进行单击。我的意思是使用类似$('iframe').live(“click”,handler)的东西来攻击onclick处理程序,使其成为所有未来的处理程序。另一个好主意,但如果菜单打开,我将无法在一次单击中激活页面上的其他链接/按钮。第一次单击将在垫片上,需要再次单击才能点击实际的链接/按钮。用户可能会感到困惑,为什么他们(有时)必须在一个链接上单击两次。不过,这并不一定是一件坏事:像
select
框中的下拉菜单这样的浏览器小部件已经有了这种行为。