从任何地方关闭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);