根据问题的实际情况,我提出了三种解决方案。
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>