有没有人知道更好的方法来获取打开的弹出窗口的句柄?

Cal*_*reg 5 javascript popup

问题: 需要从其开启窗口获取已打开的javascript弹出窗口(handle = window.open(...))的句柄,稍后在刷新其opener(父)窗口并重置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>
Run Code Online (Sandbox Code Playgroud)

如果您知道更好的解决方案,请告诉我.

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

单击图像时,将在弹出窗口中打开.

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

Luk*_*ard 1

这有点混乱,但您可以在打开的窗口中放置一个脚本,尝试调用其 window.opener 上的函数来通知父窗口其存在。

因此,图像显示窗口将具有如下功能

setInterval(function(){ 
   if(window.opener.registerChildWindow){ 
        window.opener.registerChildWindow(window);
   } 
 }), 100);
Run Code Online (Sandbox Code Playgroud)

registerChildWindow只要该函数存在,无论父窗口位于哪个页面,这都会尝试每秒调用父窗口上的函数 10 次。我不完全确定如何从现有窗口中获取窗口句柄(传递window是猜测),但这至少应该是可以使用的东西。