打开新窗口时可以删除父窗口吗?

时间:2013-01-07 16:18:30

标签: javascript internet-explorer infragistics

当我的主应用程序窗口在鼠标悬停在其上时激活自身时,我遇到了问题。

我正在使用以下行在javascript函数中打开新窗口:

window.open(URL, 'Requests', 'location=no,toolbar=no,status=yes,scrollbars=yes,resizable=yes');

我注意到如果我通过资源管理器打开一个新的IE窗口,将鼠标悬停在我们的主应用程序窗口上并不会重新激活它自己。即使在这种情况下,主窗口确实使自己成为上面window.open命令创建的弹出窗口的“顶部”。

问题是:在javascript中打开“子”窗口时,是否有办法将子窗口与父窗口分开?

更多信息:我使用Infragistics WebDataMenu并将ActivateOnHover设置为true,因此用户无需单击主菜单项即可查看子菜单选项。不幸的是,该设置使整个菜单栏敏感,以便通过它滑动鼠标激活菜单(当弹出窗口处于活动状态时,可悲的是窗口)。这是我试图解决的根本行为。

2 个答案:

答案 0 :(得分:2)

window.open();方法将创建一个弹出窗口,该窗口实际上只通过JavaScript通过调用的返回值和弹出窗口中的window.opener属性共享关系。

你想要的是一个模态窗口的行为,当你处理'子'弹出窗口时,它锁定了'父'页面的交互。

你可以尝试通过强制关注弹出窗口并阻止任何模糊来与JavaScript(以及你的用户)作斗争但这会让用户疯狂,当他们想要阅读他们的电子邮件等时(例如不推荐)

你也可以使用不那么标准的showModalDialog();方法,但支持远非完全跨浏览器,如果你试图使用它,有很多新的问题(在IE中没有右键单击,在IE中缩放问题,没有孙子弹出窗口等等)(再次不推荐)

你可以做的是制作一个类似于许多在线照片查看器的“叠加”弹出窗口,你首先覆盖一个遮罩(通常是半透明的),阻止鼠标/焦点在下面的整个页面内容上,然后用你的“弹出窗口覆盖它”内容”。请确保提供关闭选项,以便在关闭/完成叠加时删除遮罩。

请注意,如果您需要支持IE6,您还需要一个iframe垫片(如果需要Google)

许多UI框架将为您提供这样的“对话框”。 (例如jQueryUI)

答案 1 :(得分:0)

最终,我放弃了这项工作。我发现我必须要做的是关闭来自WebDataMenu的ActivateOnHover,它没有回答这个问题并且要求用户点击菜单使其下拉,但它变成了解决办法。