Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.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_Popup - Fatal编程技术网

Javascript 有人知道更好的方法来处理打开的弹出窗口吗?

Javascript 有人知道更好的方法来处理打开的弹出窗口吗?,javascript,popup,Javascript,Popup,问题:需要从其opener窗口获取已打开javascript弹出窗口(handle=window.open(…)的句柄,在刷新其opener(父)窗口并重置javascript变量后,需要多个请求 例如,父窗口可以有如下javascript: <script type="text/javascript"> var popupHandle; function openPopUp() { popupHandle=window.open('h

问题:需要从其opener窗口获取已打开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>

var popupHandle;
函数openPopUp(){
popupHandle=window.open('http://www.google.ca","流行音乐",;
popupHandle.focus();
返回弹出手柄;
}
//要获得句柄,需要重新打开与原始名称相同的弹出窗口(popupTest)。
函数getPopUpHandle(){
返回openPopUp();
}
//如果要关闭把手,请尽可能小地打开,然后关闭,使其不太明显。
函数closePopUp(){
popupHandle=window.open(“”,'popupTest','directories=no,location=no,menubar=no,status=no,resizeable=no,scrollbars=no,titlebar=no,top=1,left=1,width=1,height=1');
popupHandle.close();
}
如果你知道更好的解决方案,请告诉我

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

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

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

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

因此,图像显示窗口的功能如下

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

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

不是答案,但弹出窗口是不好的,不要使用它们:)尝试像lightbox这样的解决方案,可能会给用户更好的体验。弹出窗口(我认为这也很糟糕)使用是为了用户在填写表单时可以在单独的窗口/监视器中查看图像,并将其用作参考。有时可能需要将图像扩展到全屏以查看详细信息。lightbox是否符合您的需要?我可能没有正确地查看lightbox。我需要能够打开图像,在一个监视器上查看,vi在主页上查看图像列表和表单,并在表单中输入打开图像的详细信息。当我提交表单时,列表中的下一个图像应在同一弹出窗口中打开。使用lightbox,当图像打开时,它们无法移动到另一个监视器,并且页面本身被隐藏。或者我是否缺少一些选项?