[英]How to refresh parent window after user closes popup window?
SO上有很多完全相似的问题,但是没有一个给出正确的答案,因此迫使我将其作为一个新问题提出。 在将我的问题标记为重复之前,请先考虑这一点。
我尝试了其他问题中发布的答案,但没有一个对我有效。 这是我的代码:
在父窗口中:
<a href="createfolder.htm" onClick="return popup(this, 'createfolder', 600, 200);">Create new folder</a>
在Javascript文件中:
function popupClosed() {
//alert('About to refresh');
window.location.href = window.location.href;
//window.opener.location.reload();
}
function popup(mylink, windowname, w, h)
{
//if (! window.focus) return true;
var href;
if (typeof(mylink) == 'string')
href = mylink;
else
href = mylink.href;
var left = (window.innerWidth/2)-(w/2);
var top = (window.innerHeight/2)-(h/2);
var win = window.open(href, windowname, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width='+w+', height='+h+', top='+top+', left='+left);
win.onunload = function() {
popupClosed();
}
return false;
}
我遇到的问题是,一旦单击链接,它就会刷新父窗口-这是不希望的。 关闭弹出窗口后,它也会刷新父窗口。 但是,我想避免单击链接时发生刷新。
我不知道他们是否更改过它,但是在过去,该窗口没有要调用的事件,因此您必须开始一个时间间隔并检查closed
状态。
码
var win = window.open('http://www.google.com','google','width=800,height=600,status=0,toolbar=0');
var timer = setInterval(function() {
if(win.closed) {
clearInterval(timer);
alert('closed');
}
}, 1000);
资料来源: https : //stackoverflow.com/a/15769630/2424541
您可以刷新页面,而不用发出警报。
window.location.reload();
另外,如果要阻止锚的href
部分将您定向到页面,则还必须阻止默认行为。 您可以执行以下操作:
<a href="createfolder.htm" id="popopener" onClick="return popup(this, 'createfolder', 600, 200);">Create new folder</a>
<script>
document.getElementById('popopener').onclick = function(e) {
e.preventDefault();
}
</script>
在这一部分,您可以删除“ onClick”部分并将其放在e.preventDefault();
下e.preventDefault();
部分。 这比使用onClick
更干净。
您应该通过event.preventDefault();
禁用链接的默认click事件行为event.preventDefault();
编辑:
<a href="createfolder.htm" onClick="return popup(event, this, 'createfolder', 600, 200);">Create new folder</a>
function popup(event, mylink, windowname, w, h)
{
event.preventDefault();
if (! window.focus) return true;
var href;
if (typeof(mylink) == 'string')
href = mylink;
else
href = mylink.href;
var left = (window.innerWidth/2)-(w/2);
var top = (window.innerHeight/2)-(h/2);
var win = window.open(href, windowname, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width='+w+', height='+h+', top='+top+', left='+left);
win.onunload = function() {
window.parent.popupClosed();
};
return false;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.