是否可以从子窗口关闭父窗口(Javascript)
Is it possible to close parent window from child (Javascript)?
我正试图使用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>
请帮帮我。
从window.close((MDN:
只允许对已打开的窗口调用此方法通过使用window.open方法的脚本。如果窗户没有打开通过脚本,JavaScript控制台中会出现以下错误:脚本可能无法关闭脚本未打开的窗口。
您可以从父窗口关闭子窗口,但不能从另一个角度关闭。
你可能想试试这个
window.opener.close()
function closeW() {
window.open('javascript:window.open("", "_self", "");
window.close();', '_self');
}
从子页面调用上面的函数并超时。它适用于IE,有时也适用于Chrome。
setTimeout(closeW,500(;
更新的答案让孩子靠近父母是不好的结合。我最初的答案之所以有效,是因为我的父窗口本身是由祖父母窗口通过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';
如果您指的是父帧中的子帧,则使用
window.parent.close();
如果你指的是一个打开的窗口(使用window.open(((,那么试试这个
window.opener.close();
有一个有效的解决方案(至少在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>
试试看!
function closeAll()
{
window.opener.justClose();
}
相关文章:
- 关闭黑莓浏览器窗口 JavaScript
- 关闭窗口 Javascript
- 清除窗口Javascript幻灯片
- 弹出窗口JavaScript的站点地图生成器
- 根据弹出窗口javascript的返回值更改asp.net面板的可见性
- 将var添加到新窗口Javascript中
- 如何在引导模式弹出窗口(javascript,jquery)上运行函数
- 仅包含某些数组值的单个弹出窗口.JavaScript
- 将值传递给弹出窗口 [JavaScript]
- 在链接后控制父窗口(JavaScript)
- 将数据发送到单独的窗口javascript
- 正在访问窗口.Javascript 中的应用程序函数
- 将变量从父窗口Javascript函数传递到弹出窗口分区
- 在内容进入打印机之前关闭窗口(JavaScript)
- 窗口.JavaScript中的innerWidth
- 是否可以从子窗口关闭父窗口(Javascript)
- 窗口.javascript中的Innerheight减去数字
- 如果我重写窗口.javascript中的onerror应该返回true还是false
- 计数值后关闭窗口javascript
- 如何在缩略图图像的翻转上显示弹出窗口?Javascript、CSS