前一段时间我问过this question孩子是否可以获得有关其父母的信息。但现在我意识到我有一个属于它自己的后续问题,而不是评论:Javascript能否找出任何窗口是否已打开?
我有一个窗口A,可以从窗口B或窗口C调用。但是,当我关闭A时,如果窗口C关闭,我希望onUnload
中的某些事情发生。现在,C可能还没有打开 ,所以我不能依赖window.opener
。有什么方法可以找到任意窗口的信息吗?我考虑过检查window.opener.location
,但仍然要求C一直是开场白,这可能不是。所有窗户的名称都是已知的,所以如果我可以搜索那些,那我就是金色的。
(至于原因:A是聊天控制台,B是主菜单,C是队列监视器。当有人在队列监视器中时,它们被标记为可用于聊天。但实际聊天,他们必须加载聊天控制台才能这样做。通常,当您关闭聊天控制台时,onUnload
会尝试将您标记为不可用,但如果队列监视器仍处于打开状态,我不希望这种情况发生。 )
答案 0 :(得分:0)
能够执行此操作的唯一方法是,启动子窗口的父窗口在整个过程中保持打开状态。具有类似“祖先”的Windows可以使用公共父级作为中继点。可能需要(或至少需要)协助共同父母的代码。
我认为普通父母可以通过引用其他子窗口来为每个孩子提供一个对象;我无法想象任何失败的原因。当然,如果一个孩子从主窗口的一个化身发射,而另一个从另一个孩子发射,则无济于事。在这种情况下,即使Windows共享一个域,他们也无法找到对方。
无论如何,如果您有一个窗口的引用,.closed
属性将告诉您它是否已关闭。