【问题标题】:How can I reload an iframe inside iframe with JavaScript?如何使用 JavaScript 在 iframe 中重新加载 iframe?
【发布时间】:2013-12-04 18:23:46
【问题描述】:

我有一个域,

example.com

iframe 的来源是,

server1.example1.com

问题是,我想在我的 iframe 中使用 JavaScript 刷新 iframe,当我 location.reload() 页面时,iframe 加载为空并且这只发生在 chrome 中,我该如何解决这个问题?

【问题讨论】:

  • 我不认为你的要求是可能的。我认为这违反了same-origin policy...
  • @War10ck 但我没有违反任何规定,我只是想用 javascript 刷新我的 iframe
  • 跨站点脚本是一种违规行为。 server1.example1.com 被视为一个单独的域。
  • @War10ck 我对他的问题的印象是他希望脚本在server1.example.com 上运行(在 iFrame 本身内部,重新加载自身)。所以这里根本没有 X-Site 问题。也许只是一个奇怪的浏览器特定问题。 @user .. 你能否提供一个 jsfiddle 或其他最小的测试用例供我们修改?
  • 我现在改变了脚本的工作方式,它更复杂但是,它可以工作,谢谢大家的帮助

标签: javascript google-chrome


【解决方案1】:

也许试试这个:

// Reload the current page, without using the cache
document.location.reload(true); 

来源https://developer.mozilla.org/en-US/docs/Web/API/Location.reload

我知道 Chrome 的缓存做了一些非常聪明的事情,所以也许这会有所帮助。

【讨论】:

    【解决方案2】:

    右键单击并重新加载框架,严重:

    如果 iframe 不在其他域中,您可以执行以下操作:

    document.getElementById(FrameID).contentDocument.location.reload(true);
    

    但由于 iframe 位于不同的域中,您将被同源策略拒绝访问 iframe 的 contentDocument 属性。

    但是,如果您的代码在 iframe 的父页面上运行,您可以通过将其 src 属性设置为自身来强制跨域 iframe 重新加载。像这样:

    // hackishly force iframe to reload
    var iframe = document.getElementById(FrameId);
    iframe.src = iframe.src;
    

    如果您尝试从另一个 iframe 重新加载 iframe,那么您很不走运,这是不可能的。

    【讨论】:

    • 我想在同一个 iframe 中使用 javascript 重新加载我的 iframe
    • @user3067113 这个澄清仍然有些混乱。让我看看我是否有这个权利。您只有 1 个 iframe。您希望该 iframe 中的 javaScript 重新加载相同的 iframe?
    • @ZachL 我认为这是合理的:)
    猜你喜欢
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    • 2018-07-27
    • 2011-05-14
    • 1970-01-01
    • 2012-06-17
    • 2014-01-11
    • 2020-04-29
    相关资源
    最近更新 更多