繁体   English   中英

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

[英]Can I remove parent window when opening a new window?

当鼠标悬停在我的主应用程序窗口时,我遇到了问题。

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

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

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

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

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

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

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

您可以通过强制关注弹出窗口并阻止任何模糊来尝试与JavaScript(和您的用户)进行斗争,但这会在用户想要阅读他们的电子邮件等时引起用户的不满(例如,不推荐)

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM