Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否存在弹出窗口?(javascript)_Javascript_Browser_Popup - Fatal编程技术网

是否存在弹出窗口?(javascript)

是否存在弹出窗口?(javascript),javascript,browser,popup,Javascript,Browser,Popup,我试图确定javascript中是否存在弹出窗口。我确实知道它的名称(传入window.open()),但我没有窗口引用。例如,考虑一下这个问题:我有一个网页,叫做“代码>窗口”。打开(“URL”,“弹出”)< /代码>,我还有网页B,它还想调用窗口。打开(“URL”,“弹出”)< /C> >,除非存在这样的弹出窗口。在这种情况下,B只关注弹出窗口。所以web页面B没有对弹出窗口的引用(并且它不能有,我们可以假设A和B是独立的)。有什么方法可以做到这一点吗?如果您使用窗口结构,您应该能够做到这一

我试图确定javascript中是否存在弹出窗口。我确实知道它的名称(传入
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不是一个问题吗?