2009-09-22 16 views
4

问题:需要从其opener窗口获取已打开的javascript弹出窗口(handle = window.open(...))的句柄,在其opener(parent)窗口刷新后发出多个请求并重置javascript变量。有没有人知道更好的方法来获得打开的弹出窗口的句柄?

例如,父窗口可以了JavaScript如下:

<script type="text/javascript"> 
     var popupHandle; 
     function openPopUp() { 
      popupHandle=window.open('http://www.google.ca', 'popupTest'); 
      popupHandle.focus(); 
      return popupHandle; 
     } 
     // To get handle, need to reopen popup with same name as original (popupTest). 
     function getPopUpHandle() { 
      return openPopUp(); 
     } 
     // If getting handle to close, open as small as possible and close so it’s not too noticeable. 
     function closePopUp() { 
      popupHandle=window.open('', 'popupTest', 'directories=no,location=no,menubar=no,status=no,resizable=no,scrollbars=no,titlebar=no,top=1,left=1,width=1,height=1'); 
      popupHandle.close(); 
     } 
</script> 

如果你知道一个更好的解决方案,请让我知道。

我如何在我的应用程序中使用它: 我有一个显示在屏幕一侧的图像列表。 另一方面,我有一个表格,允许我根据图像提交信息。提交表单时,它会附加引用的图像。

单击图像时,会在弹出窗口中打开。

提交表单时,列表中的下一个图像应该在弹出窗口中打开。 弹出窗口可能已被用户关闭。

+0

没有答案,但弹出窗口很糟糕,请不要使用它们:)尝试像lightbox这样的解决方案,这可能会为用户带来更好的体验。 – marcgg 2009-09-22 17:49:30

+0

使用弹出窗口(我认为它不好)的原因是,用户可以在填写表单时在单独的窗口/监视器中查看图像,并将其用作参考。有时可能需要将图像扩大到全屏以查看详细信息。 – CalvinTreg 2009-09-22 17:52:32

+0

是否不符合您的需求? http://www.huddletogether.com/projects/lightbox2/ – marcgg 2009-09-22 17:54:06

回答

1

退房this site ..本质上,重新打开窗口或使用框架来跟踪手柄。

+0

感谢您的链接,请先阅读。无法使用框架。 – CalvinTreg 2009-09-22 18:57:55

+0

看起来像重新打开窗户竟然是最快的解决方案。谢谢。 – CalvinTreg 2009-11-05 23:15:29

1

这是一个混乱,但你可以把一个脚本放在打开的窗口,试图调用window.opener函数来通知父窗口它的存在。

所以,图像显示窗口将会有一个像

setInterval(function(){ 
    if(window.opener.registerChildWindow){ 
     window.opener.registerChildWindow(window); 
    } 
}), 100); 

这将尝试调用父窗口的registerChildWindow功能的功能的第二个10次,只要存在功能,无论哪一页父窗口开启。我不完全确定如何从现有窗口中获取窗口句柄(传递window是一个猜测),但这至少应该是一个可以玩的东西。

相关问题