2013-01-07 79 views
0

当鼠标悬停在主应用程序的窗口上时,我遇到了一个问题。打开新窗口时可以删除父窗口吗?

我使用下面的一行打开新窗口中的JavaScript函数:

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

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

问题是这样的:有没有什么办法,当在javascript中打开一个“子”窗口时,将子窗口从父窗口中分离出来?

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

+0

我不知道你可以控制多少,因为我得到不同的行为,使用相同的代码在同一个站点和另一个网站打开一个页面:window.open(“Default2.aspx”); window.open(“http://www.infragistics.com”); – alhalama

回答

0

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

2

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

你想要的是一个模态窗口的行为,当你在“子”弹出框中工作时,它会阻止“父”页面的交互。

您可以尝试通过强制在弹出的一个重点和阻止任何模糊的JavaScript(和您的用户)打,但是这将推动用户坚果当他们想要去阅读他们的电子邮件等。(如不推荐)

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

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

注意,如果你需要支持IE6,你还需要一个iframe垫片(谷歌如果需要的话)

许多UI框架将提供一个“对话”就这样对你。 (例如jQueryUI)

+1

@Dan由于您已经使用NetAdvantage,所以如果您使用此方法,则可以使用WebDialogWindow提供对话窗口:http://help.infragistics.com/NetAdvantage/ASPNET/Current/CLR4.0/?pagepage=WebDialogWindow_About_WebDialogWindow html的 – alhalama

相关问题