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

stop child window reloading even when parent window has reloaded

本文关键字:新加载 加载 窗口      更新时间:2023-09-26

我有这个子窗口和一个条件,防止窗口重新加载,如果'send'再次点击,而窗口仍然打开变量'myStatus'等于'processing'。问题是,如果打开子窗口,然后刷新父页面并再次单击"发送",则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");
}):

我也遇到过同样的问题

我用双向通信解决了这个问题

如果用户刷新父页面,将此信息发送给子窗口。子窗口将运行一个计时器,它将继续检查父页面是否被重新加载。重新加载父页面后,在parent

中创建子窗口的引用代码:

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