这里有许多完全相似的问题,但没有一个给出正确的答案,因此迫使我将此问作为一个新问题。请在将我的问题标记为重复之前考虑这一点。
我尝试了在其他问题中发布的答案,但没有一个对我有效。这是我的代码:
在父窗口中:
<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;
}
我遇到的问题是,只要点击链接就会刷新父窗口 - 这是不可取的。关闭弹出窗口后,它还会刷新父窗口。但是,我想避免单击链接时发生的刷新。
答案 0 :(得分:0)
我不知道他们是否改变了它,但在过去,窗口没有可以调用的事件,所以你必须开始一个间隔并检查closed
状态。
<强> CODE 强>
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();
部分下。这比使用onClick
要清晰得多。
答案 1 :(得分:0)
您应该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;
}