【问题标题】:Reload parent window from child window从子窗口重新加载父窗口
【发布时间】:2010-11-22 00:37:18
【问题描述】:

如何使用 jQuery 重新加载子窗口的父窗口?

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    在这种情况下不需要 jQuery。

    window.opener.location.reload(false);
    

    https://developer.mozilla.org/en-US/docs/Web/API/Window

    【讨论】:

    • 是的,刚刚解决了这个问题。谢谢你的解释。
    • 它确实需要一个参数 - 你可以传入 true 来强制重新加载(即忽略缓存)
    • Mozilla 参考网站提到了这一点。我想知道它是否是特定于浏览器的。
    • 即使参数是非标准的,它也会被忽略(w3.org/TR/Window/#location-methods),所以除非你想要默认行为,否则使用它并没有什么坏处。
    • 无法在 chrome 中工作:未捕获的类型错误:无法读取 null 的属性“位置”
    【解决方案2】:

    您可以使用window.openerwindow.parentwindow.top 来引用相关窗口。从那里,您只需调用 reload 方法(例如:window.parent.location.reload())。

    但是,需要注意的是,如果您需要离开最初打开的页面,您可能会遇到 window.opener 的问题,因为引用将会丢失。

    【讨论】:

    • +1 标记的答案使用了 window.opener (我明白为什么这是首选方式),但我只有运气 w/ window.top
    • 如果子窗口是 iframe,你可以使用:window.parent.reload();或 window.parent.location.href='abc.html';
    • reload() 不是window 的方法。你的意思是window.parent.loacation.reload(),我的回答中有这个。
    【解决方案3】:
    parent.location.reload();
    

    这应该可行。

    【讨论】:

    【解决方案4】:

    如果你想简单地重新加载子窗口的父窗口: 下面这行代码就足够了。

    opener.location.reload(); 
    

    如果您想用旧值或新值的查询字符串(请求)重新加载父窗口。以下代码将完成工作。

    if (opener.location.href.indexOf('?') > 0) {
          var baseUrl = opener.location.href.substring(0, opener.location.href.indexOf('?'));
          opener.location.href = baseUrl + "?param1=abc&param2=123";
    }
    else {
          opener.location.href = opener.location.href + "?param1=abc&param2=123";
    }
    

    上面的例子中不需要这个opener.location.reload();

    【讨论】:

      【解决方案5】:

      您可以使用以下方法重新加载父窗口位置:

      window.opener.location.href = window.opener.location.href;
      

      【讨论】:

        【解决方案6】:
          top.frames.location.reload(false);
        

        【讨论】:

          【解决方案7】:

          这对我有用:

            window.opener.location.reload()
            window.close();
          

          在这种情况下,当前选项卡将关闭,父选项卡将刷新。

          【讨论】:

            【解决方案8】:

            防止重新提交以前的数据。在 Firefox 和 Safari 中测试。

            top.frames.location.href = top.frames.location.href;
            

            【讨论】:

              【解决方案9】:
              window.parent.opener.location.reload();
              

              为我工作。

              【讨论】:

                【解决方案10】:

                这将适用于从子窗口刷新父窗口

                window.opener.location.reload(true);
                

                对于某些版本的 IE,这将不起作用,因此您可以设置一些延迟

                window.setTimeout(window.opener.location.reload(true), 3000);
                

                【讨论】:

                  【解决方案11】:

                  这会起作用

                  window.location.assign(window.location.href);
                  

                  【讨论】:

                    【解决方案12】:

                    对于 Atlassian Connect 应用,请使用 AP.navigator.reload();

                    查看详情here

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 2013-05-03
                      • 1970-01-01
                      • 1970-01-01
                      • 2013-05-04
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多