我在 JavaScript 中通过 window.open 打开了一个弹出窗口,我想在关闭这个弹出窗口时刷新父页面。(onclose 事件?)我该怎么做?
window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");
我在 JavaScript 中通过 window.open 打开了一个弹出窗口,我想在关闭这个弹出窗口时刷新父页面。(onclose 事件?)我该怎么做?
window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");
您可以使用“ window.opener ”访问父窗口,因此,在子窗口中编写如下内容:
<script>
window.onunload = refreshParent;
function refreshParent() {
window.opener.location.reload();
}
</script>
弹出窗口没有任何可以收听的关闭事件。
另一方面,当窗口关闭时,有一个 closed 属性设置为 true 。
您可以设置一个计时器来检查关闭的属性,并这样做:
var win = window.open('foo.html', 'windowName',"width=200,height=200,scrollbars=no");
var timer = setInterval(function() {
if(win.closed) {
clearInterval(timer);
alert('closed');
}
}, 1000);
请参阅此工作 Fiddle 示例!
在您的子页面上,放置这些:
<script type="text/javascript">
function refreshAndClose() {
window.opener.location.reload(true);
window.close();
}
</script>
和
<body onbeforeunload="refreshAndClose();">
但是作为一个好的 UI 设计,你应该使用 Close,button
因为它对用户更友好。请参阅下面的代码。
<script type="text/javascript">
$(document).ready(function () {
$('#btn').click(function () {
window.opener.location.reload(true);
window.close();
});
});
</script>
<input type='button' id='btn' value='Close' />
我用这个:
<script language='javascript'>
var t;
function doLoad() {
t = setTimeout("window.close()",1000);
}
</script>
<script type="text/javascript">
function refreshAndClose() {
window.opener.location.reload(true);
window.close();
}
</script>
<body onbeforeunload="refreshAndClose();" onLoad='doLoad()''>
当窗口关闭时,它会刷新父窗口。
window.open 将返回对新创建窗口的引用,前提是打开的 URL 符合同源策略。
这应该有效:
function windowClose() {
window.location.reload();
}
var foo = window.open("foo.html","windowName", "width=200,height=200,scrollbars=no");
foo.onbeforeunload= windowClose;