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

标签 javascript browser popup

我正在尝试确定 javascript 中是否存在弹出窗口。我确实知道它的名称(在 window.open() 中传递),但我没有窗口引用。例如,考虑一下:我有一个网页 A,它调用 window.open('url', 'popup') 并且我有一个网页 B,它也想调用 window.open( 'url', 'popup') 除非存在这样的弹出窗口。在这种情况下,B 只关注弹出窗口。所以网页B没有对popup的引用(也不可能有,我们可以假设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;
}

我在使用窗口对象的 close 属性时总是遇到一些问题,因此您可能需要将一个函数映射到弹出窗口中的 onunload 事件,该事件仅清除 mainWindow 上的 PopupWindow 变量,然后添加也在您的 if 语句中进行检查。

关于javascript - 是否存在弹出窗口? (javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5469655/

相关文章:

html - 自定义 html 标签的默认 css?

java - 浏览器PDF文件预览器(Google风格)

javascript - 基本的 JavaScript 弹出框

javascript - 使用javascript从gif获取帧数和帧间延迟

javascript - 使用 jQuery 和 Laravel 对数据进行排序的最佳方式?

javascript - Redux-forms 从 ComponentWillRecieveProps 调用备用提交

javascript - 如果值为 0,Highcharts 不应绘制图表

Android,如何以编程方式在任何浏览器中阻止 URL?

javascript - 如何在 Webdriver 脚本中禁用/避免 xdg-open 弹出窗口

javascript - 如何使用 javascript 创建弹出页面