从任何地方关闭javascript-popup-window

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

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

我找到了这个基本的弹出控件:

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

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

有没有办法在全局范围内添加和关闭这个特定的弹出窗口?

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

1)closepopup()不适用于其他页面

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

将pageA.html

  Open window... Go to Page B   

https://stackoverflow.com/questions/16525238/close-javascript-popup-window-from-anywhere/PageB.html

    Close window...   

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

   My example        

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

    Open Window 
Close Window
Refresh Frame (and try again)

如果您尝试从iframe关闭它…

 top.my_window.close(); 

我相信你需要出一个级别,因为在父窗口上设置了该变量。 不在iframe中。

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

 $(window).unload(closepopup);