即使父窗口已重新加载,也会停止子窗口重新加载

时间:2013-02-28 18:57:49

标签: javascript jquery parent-child

如果窗口仍然打开且变量'myStatus'等于'processing',我有这个子窗口和一个阻止窗口重新加载的情况,如果再次点击'send'。问题是如果打开子窗口然后刷新父页面并再次单击“发送”,则childPage变量将丢失并允许子页面重新加载。有没有办法解决这个问题?谢谢。

var childPage = null;

$('#send').click(function(){

    if(childPage && !childPage.closed && childPage.myStatus == "processing"){
      alert('child window is open and processing');
    }else{
     childPage = window.open("test.html","send","width = 300,height=300");
}):

1 个答案:

答案 0 :(得分:3)

我有同样的问题

我使用双向沟通解决了它

如果用户刷新父页面将此信息发送到子窗口。 子窗口将运行一个计时器,它将继续检查是否重新加载父页面。 重新加载父页面后,在父级中创建子窗口的引用

代码:

在parentWindow中

 window.onbeforeunload =function (){
  childPage.reconnect();
}

window.saveChildReference =function (ref){
  childPage = ref;
}
子窗口中的

window.reconnect = function(){
     var i =0;
   var timer = setInterval(function(){
    i++;
        if(window.opener && window.opener.saveChildReference ){
               window.opener.saveChildReference(window);
             clearTimeout(timer );
         }

        if(i > 100){
         clearTimeout(timer );// stop trying as parent may be closed.
      }

   }, 100);

};