是否存在弹出窗口?(javascript)
我试图确定javascript中是否存在弹出窗口。我确实知道它的名称(传入是否存在弹出窗口?(javascript),javascript,browser,popup,Javascript,Browser,Popup,我试图确定javascript中是否存在弹出窗口。我确实知道它的名称(传入window.open()),但我没有窗口引用。例如,考虑一下这个问题:我有一个网页,叫做“代码>窗口”。打开(“URL”,“弹出”)< /代码>,我还有网页B,它还想调用窗口。打开(“URL”,“弹出”)< /C> >,除非存在这样的弹出窗口。在这种情况下,B只关注弹出窗口。所以web页面B没有对弹出窗口的引用(并且它不能有,我们可以假设A和B是独立的)。有什么方法可以做到这一点吗?如果您使用窗口结构,您应该能够做到这一
window.open()
),但我没有窗口引用。例如,考虑一下这个问题:我有一个网页,叫做“代码>窗口”。打开(“URL”,“弹出”)< /代码>,我还有网页B,它还想调用<代码>窗口。打开(“URL”,“弹出”)< /C> >,除非存在这样的弹出窗口。在这种情况下,B只关注弹出窗口。所以web页面B没有对弹出窗口的引用(并且它不能有,我们可以假设A和B是独立的)。有什么方法可以做到这一点吗?如果您使用窗口结构,您应该能够做到这一点
每当我遇到这个问题,我就有一个始终存在的主窗口。然后,在调用window.open时,我获取该函数返回的处理程序,然后将其分配给我知道将始终存在的主窗口
然后,每当调用window.open时,我都会去检查主窗口,看看它是否有一个用于弹出窗口的打开窗口处理程序
因此,假设您的主窗口始终存在(您可以始终使用一个使用框架来显示实际内容的窗口,这样对您的用户来说,它看起来是一样的),您可以执行以下操作:
var mainWindow = window;
while(mainWindow != mainWindow.parent){
mainWindow = mainWindow.parent;
}
if(mainWindow.PopupWindow === undefined || mainWindow.PopupWindow.closed){
var handler = window.open('url', 'popup');
mainWindow.PopupWindow = handler;
}
我在使用window对象的closed属性时总是遇到一些问题,因此您可能需要将一个函数映射到弹出窗口中的onunload事件,该事件只清除主窗口上的PopupWindow变量,然后在if语句中添加该检查。我想您不能,因为每个窗口都是独立的。浏览器故意阻止窗口发现另一个窗口会发生什么。可能需要考虑围绕jQuery对话框进行重新构建——假设需要JavaScript不是一个问题吗?