如何让弹出窗口始终保持在最上层?

3

我希望有一个JavaScript/jQuery弹出窗口(子页面),它始终在父页面的前面,就像Facebook当前图片查看功能一样。

用户可以通过点击关闭按钮来关闭它。

我已经尝试了以下方法:

mywindow  = window.open ("DownloadForm.aspx", "mywindow","location=1,status=1,scrollbars=1, width=350,height=150");
mywindow.moveTo(350, 350);

这段代码成功地在父页面前打开了一个子页面,但是父页面上有jQuery代码($(#test).click()),导致父页面始终处于最前面。我尝试将window.open()代码放在$(#test).click()之后,但这并没有解决问题。$(#test).click()是必需的,因此我需要一个解决方法。非常感谢您的帮助,提前致谢。

将子窗口始终置于父窗口之上 - xkeshav
如果弹出窗口可以在父页面内打开,您可以尝试使用{modal: true}jQuery UI对话框 - 这将打开一个伪子窗口并使原始页面变灰,保持对话框一直处于“最上方”,直到关闭。也可以尝试谷歌搜索jquery lightbox,虽然我自己从未使用过,但我认为它们也适用于这里...祝好运! - Xavier Holt
我认为SO的目的是回答问题并教育用户和开发人员。弹出窗口太老旧了,应该用轻盒子或模态窗口来替代。现代浏览器支持通过CSS或jQuery创建模态窗口。 - Ciprian
4个回答

3
myWindow.focus()

许多现代浏览器会阻止此功能的使用,但这是唯一的方法。

2

在弹出窗口中打开的页面中使用以下JavaScript代码:

<body onblur="self.focus();"> 

0

我相信你无法控制窗口的顺序。不如使用一个轻量级的 JavaScript 插件来代替弹出窗口(这种窗口通常会被浏览器屏蔽)。这些插件通常是免费的,时尚的,并且效果很好。


这就是Facebook正在做的事情。 - Amr Elgarhy
1
Facebook使用自己的JavaScript API和模态框库。只需在谷歌上搜索“lightbox javascript”或“javascript modal dialog”,就能找到许多可下载的脚本。选择一个适合你需要的。 - Craig White
是的,我的意思是Facebook不使用弹出窗口,而是在同一页中使用了一个弹出层。 - Amr Elgarhy
1
是的,Facebook只是使用具有更高z-index(这是CSS样式)的绝对定位的div。 - Craig White

0

只需从模态CSS中设置它。 z-index 通常设置为1。 只需将其更改为9999。 这就是 z-index 的目的,即设置弹出窗口的顶层。

如果不使用bootstrap弹出窗口,则需要使用CSS进行设置。 浏览器不能保证在窗口上使用 .focus()


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接