1

我正在尝试构建一个可以从任何地方关闭的弹出窗口。

在主页上,您可以选择打开它。在浏览主页的任何时候,用户都可以再次关闭它。

我发现了这个基本的弹出控件:

 function popuponclick()
   {
      my_window = window.open("", "mywindow","status=1,width=350,height=150");
   }

   function closepopup()
   {
      my_window.close ();
   }

问题是,一旦您离开打开弹出窗口的页面,该功能就会失去连接,并且弹出窗口将不再关闭。

有没有办法在页面范围内解决和关闭这个特定的弹出窗口?

4

3 回答 3

2

根据问题的实际情况,我提出了三种解决方案。

1) closepopup() 在其他页面上不起作用

如果您需要在从页面 A 打开时从页面 B 关闭弹出窗口,则以下代码将允许您从页面 B 获取对弹出窗口的引用并关闭它。 参考:查找window.open之前打开的窗口

页面A.html

<script>
 function popuponclick()
   {
      my_window = window.open("http://google.com", "mywindow","status=1,width=350,height=150");
   }

   function closepopup()
   {
      my_window.close ();
   }
</script>

<a href="javascript:popuponclick()">Open window...</a></br>
<a href="PageB.html">Go to Page B</a>

</body>
</html>

PageB.html

<html>
<body>

<script>
   function closepopup()
   {
      var popupPlayer= window.open('', 'mywindow', 'status=1,width=350,height=150') ;
      popupPlayer.focus();
      popupPlayer.close();
   }
</script>

<a href="javascript:closepopup()">Close window...</a></br>

</body>
</html>

2) closepopup() 不能在打开窗口的同一页面上工作

需要对 my_window 的全局引用,因此您需要像这样更改代码:

     var my_window; //global reference here
    function popuponclick()
       {
          my_window = window.open("", "mywindow","status=1,width=350,height=150");
       }

       function closepopup()
       {
          my_window.close ();
       }

3)使用框架的最后第三个解决方案

您将页面分成 1 个框架(一个为 100%),另一个为 0%。

您在父框架中添加窗口打开/关闭代码。比您通过跨框架 javascript 命令调用窗口控制代码。

框架 HTML 包含 Javascript

<html>
<head>
<title>My example</title>

<script>

  var my_window;

 function popuponclick()
   {
      my_window = window.open("", "mywindow","status=1,width=350,height=150");
   }

   function closepopup()
   {
      my_window.close ();
   }
</script>

</head>
<frameset cols="100%,0%">
<frame src="frame.html"/>
<frame/>
</frameset>
</html>

内部框架 (frame.html) - 调用父 Javascript

<html>
<body>
<a href="javascript:parent.popuponclick()"> Open Window </a><br/>
<a href="javascript:parent.closepopup()"> Close Window </a><br/>
<a href="javascript:location.href=location.href"> Refresh Frame (and try again)</a><br/>
</body>
</html>
于 2013-05-13T15:14:58.707 回答
0

如果您只需要在离开主页时自动关闭弹出窗口(如评论中所建议),您只需执行以下操作:

$(window).unload(closepopup);
于 2013-05-13T15:49:58.977 回答
0

如果您试图从 iframe 关闭它...

top.my_window.close();

我相信您需要提高一个级别,因为该变量是在父窗口上设置的。不在 iframe 中。

于 2013-05-13T15:31:40.587 回答