用户关闭弹出窗口后如何刷新父窗口?

时间:2015-08-19 08:11:39

标签: javascript

这里有许多完全相似的问题,但没有一个给出正确的答案,因此迫使我将此问作为一个新问题。请在将我的问题标记为重复之前考虑这一点。

我尝试了在其他问题中发布的答案,但没有一个对我有效。这是我的代码:

在父窗口中:

  <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;
}

我遇到的问题是,只要点击链接就会刷新父窗口 - 这是不可取的。关闭弹出窗口后,它还会刷新父窗口。但是,我想避免单击链接时发生的刷新。

2 个答案:

答案 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;
}