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

标签 javascript jquery parent-child

我有这个子窗口和一个条件,如果在窗口仍然打开且变量“myStatus”等于“处理”时再次单击“发送”,则该条件会阻止窗口重新加载。问题是,如果打开子窗口然后刷新父页面并再次单击“发送”,则 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");
}):

最佳答案

我遇到了同样的问题

我用双向通信解决了它

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

代码:

在父窗口中

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

};

关于javascript - 即使父窗口已重新加载,也停止子窗口重新加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15143477/

相关文章:

Javascript:for循环中定义的每个事件处理程序都是相同的,使用最后一次迭代的值

javascript - FFMPEG - 无法在 JS 文件中添加水印

menu - Typo3 列出所有子页面的内容作为父页面的内容

并发进程

ios - 如何在 View 之间传递数据。我应该什么时候使用什么?

javascript - 使用 Jquery 从多维 JSON 数组获取变量

jquery - 点击 "enter"按钮不会在 IE8 中提交表单

javascript - 投资组合列表中损坏的 animate() 算法

javascript - 创建简单的 JQuery 待办事项列表

JavaScript Echo 双引号内的 Var