我正在尝试使用javascript从子窗口关闭父窗口,但它无法正常工作。
如果您有任何代码,请与我分享。
我的父母html:
<script>
var winr;
var selfw;
function openAn(){
selfw=self.window;
winr=window.open("shell.htm","");
}
function justClose(){
//setTimeout("closeAfterMin()",2000);
winr.close();
}
function closeAfterMin(){
alert("sd");
selfw.close();
}
</script>
<body onload='openAn()' >
<h1>New Web Project Page</h1>
</body>
我的孩子html:
<script>
function closeAll(){
window.parent.close();
}
</script>
<body>
<div onclick="closeAll();" onunload="window.opener.close();">
Close Parent and self
</div>
</body>
请帮帮我..
答案 0 :(得分:7)
仅允许为打开的窗口调用此方法 通过使用window.open方法的脚本。如果窗口没有打开 通过脚本,JavaScript控制台中出现以下错误: 脚本可能无法关闭脚本未打开的窗口。
您可以从父级关闭子窗口,但不能反过来。
答案 1 :(得分:1)
function closeW() {
window.open('javascript:window.open("", "_self", "");
window.close();', '_self');
}
使用子页面的超时调用上面的函数。它适用于IE,有时也适用于Chrome。
setTimeout(closeW,500);
答案 2 :(得分:0)
function closeAll()
{
window.opener.justClose();
}
答案 3 :(得分:0)
如果您的意思是父框架中的子框架,请使用
window.parent.close();
如果你的意思是一个打开的窗口(使用window.open()),那么试试这个
window.opener.close();
答案 4 :(得分:0)
有一个可行的解决方案(至少在Chrome中):
以下是父页面的代码:
<html>
<head>
<script type="text/javascript">
function openChild() {
var w = window.open("parent_close_child.html", "child");
}
</script>
</head>
<body>
<input type="button" value="Open" onclick="openChild()" />
</body>
</html>
以下是子页面的代码:
<html>
<head>
<script type="text/javascript">
function closeParent() {
var w = window.opener;
window.opener = self;
w.close();
}
</script>
</head>
<body>
<input type="button" value="Close parent" onclick="closeParent()" />
</body>
</html>
试试吧!
答案 5 :(得分:0)
更新了答案 让孩子关闭父母是错误的耦合。我的原始答案才有效,因为我的父窗口本身是通过祖父母窗口的javascript打开的!
为避免不必要的耦合,执行此操作的正确方法是让父窗口使用setInterval
对触发关闭的事件轮询子项。在此示例中,该事件是子窗口关闭。我实际上用这个用ajax刷新页面的一部分而不是关闭窗口,但原理是一样的......
$('#open_child').click(
function(e) {
e.preventDefault();
docs_popup = window.open($('#open_child').attr('href'),'upload_doc');
var timer = setInterval(function() {
if(docs_popup.closed) {
window.close();
}
}, 1000);
return false;
} );
原始答案 实际上有一个相当简单的工作。
创建一个除了关闭之外什么也不做的页面,例如close.html
:
<!DOCTYPE html>
<html>
<head>
<script>window.close();</script>
</head>
<body>
<p>This window should close automatically.</p>
</body>
</html>
然后在子窗口中,将开启器重定向到自行关闭的页面:
window.opener.location.href='close.html';
答案 6 :(得分:0)
您可能想尝试这个
window.opener.close()