【问题标题】:Preventing an iFrame from refreshing upon adding a second iFrame添加第二个 iFrame 时防止 iFrame 刷新
【发布时间】:2013-08-15 13:51:03
【问题描述】:

我正在开发一个包含多个 iFrame 的网络应用程序。框架可以随时添加到 DOM 中。我目前可以成功地将 iFrame 添加到应用程序中,但是,当新的 iframe 加载时,其他 iframe 也会重新加载。在静态网页的情况下,这很好,但在我的应用程序中,iframe 有小部件正在运行,不得不手动恢复它们的状态变得很痛苦。

有没有办法在添加新 iframe 时阻止原始 iframe 刷新?

原文:

<iframe src="example.com" id="iframe1"></iframe>
document.getElementById("iframe1").contentWindow.whatever

事情发生后:

<iframe src="example.com" id="iframe1"></iframe>
<iframe src="example.org" id="iframe2"></iframe>

iframe2 加载和 iframe1 重新加载

首选行为:

iframe2 加载,iframe1 保持原样,直到我明确调用 reload()

编辑:

在控制台上运行多次

document.body.innerHTML += '<iframe src="http://example.com"></iframe>';

可以在我的窗口管理器中查看此行为的示例

http://magnesiumbeta.com/Window.html(在添加第二个窗口之前将窗口移动到其他位置,以查看它们都刷新)

【问题讨论】:

  • 向 DOM 添加 iframe 不会以任何方式影响现有 iframe 的状态:jsfiddle.net/eGAkU您能否提供一个发生这种情况的工作示例?
  • @ndm 现在我很困惑.. jsfiddle 有效,但我的代码项目没有.. 嗯
  • @ndm 我添加了一个示例

标签: javascript html iframe refresh


【解决方案1】:

附加 DOM 内容以这种方式不受支持,您在 .innerHTML 上使用 += 运算符所做的操作是将节点的全部内容替换为 @987654325 @,因此所有可能的外部资源都被重新加载,因为它们是新内容。

为了避免这种情况,您必须使用正确的 DOM 方法来附加子节点,即Node.appendChild()

var iframe = document.createElement('iframe');
iframe.src = 'http://example.com';
document.body.appendChild(iframe);

或者既然您已经在使用 jQuery,请使用它自己的 append() 方法。

$(document.body).append('<iframe src="http://example.com"></iframe>');

【讨论】:

  • 天哪,非常感谢!你是一个救生员:D
  • :) 对不起,你只是让我的项目从完全崩溃变成了非常酷
猜你喜欢
  • 2011-05-22
  • 1970-01-01
  • 2010-10-02
  • 2010-12-19
  • 1970-01-01
  • 2014-08-28
  • 1970-01-01
  • 2014-02-11
  • 1970-01-01
相关资源
最近更新 更多