【问题标题】:reload parent window from within an iframe从 iframe 中重新加载父窗口
【发布时间】:2011-03-18 11:31:43
【问题描述】:

我在 iframe 中有我的登录页面,并希望在 iframe 中使用 ajax 和 jquery 重新加载父窗口而不刷新,但我遇到了这样的错误

(this[0].ownerDocument || this[0]).createDocumentFragment 不是函数 请帮忙!

【问题讨论】:

  • var u = document.referrer; top.window.location.href = u;

标签: jquery ajax iframe


【解决方案1】:

我可以通过使用 javascript 重新加载页面来实现这一点

parent.location.reload();

然后我触发了一个触发器来打开目标 iframe

$("#log-inout").trigger("click");

我需要这样的系统来应对特殊情况。这可能会对处于类似情况的其他人有所帮助。

【讨论】:

  • 这仅在您从同一位置加载两个窗口时才有效。否则,浏览器拒绝重新加载,因为它违反了“同源策略”。 Bert-Jan 的回答同样适用于 parent.location.href。
【解决方案2】:
parent.location.href=parent.location.href

给出比

更平滑的结果
parent.location.reload()

后者强制完全重新加载,而第一个似乎更有效地更新,几乎就像 ajax。

【讨论】:

  • 这种方式如果父域和iframe域不同的话是不行的。 "协议、域和端口必须匹配。"
  • parent.location.href=parent.location.href 对我不起作用。父窗口什么也没做。
【解决方案3】:

你可以使用:

window.parent.location.href = "Create?Param=value";

或者:

window.parent.location.href = "http://www.stackoverflow.com";

【讨论】:

    【解决方案4】:

    不要打扰!如果您使用 ajax,为什么还要使用 iframe。

    只需加载登录使用

    $("你想在这里加载内容的地方").load("你的iframe的src在这里");

    //load via ajax
    $("div").load("login.php");
    

    更简单,更优雅。

    【讨论】:

    • 我实际上想在用户登录后刷新内容(父窗口),而 iframe(登录)仍然打开
    • 有趣的想法,值得关注!
    【解决方案5】:

    如果你的 iFrame 和主窗口是完全相同的域和端口,那么你可以使用

    window.top.location.reload()
    

    【讨论】:

      猜你喜欢
      • 2013-05-03
      • 1970-01-01
      • 2010-11-22
      • 2017-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-23
      相关资源
      最近更新 更多