我正在尝试构建一个可以从任何地方关闭的弹出窗口。
在主页上,您可以选择打开它。在浏览主页的任何时候,用户都可以再次关闭它。
我找到了这个基本的弹出控件:
function popuponclick()
{
my_window = window.open("", "mywindow","status=1,width=350,height=150");
}
function closepopup()
{
my_window.close ();
}
问题是,一旦你离开打开弹出窗口的页面,该功能就会失去连接,弹出窗口将不再关闭。
有没有办法在全网页上添加和关闭这个特定的弹出窗口?
答案 0 :(得分:1)
根据实际问题,我提出了三种解决方案。
如果您需要在从页面A打开时关闭页面B中的弹出窗口,则以下代码将允许您从页面B获取对弹出窗口的引用并将其关闭。 参考:Find window previously opened by window.open
<强> 将pageA.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>
需要对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 ();
}
您将页面分为1帧(一个是100%),另一个是0%。
您可以在父框架中添加窗口打开/关闭代码。 比通过跨框架javascript命令调用窗口控制代码。
框架包含Javascript的HTML
<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>
答案 1 :(得分:0)
如果您尝试从iframe关闭它...
top.my_window.close();
我认为你需要出一个级别,因为在父窗口上设置了该变量。不在iframe中。
答案 2 :(得分:0)
如果您只需要在离开主页时自动关闭弹出窗口(如评论中所示),您只需执行以下操作:
$(window).unload(closepopup);