防止iFrame在添加第二个iFrame时刷新
Preventing an iFrame from refreshing upon adding a second iFrame
我正在开发一个包含多个iFrame的web应用程序。这些帧可以在任意点添加到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内容,在.innerHTML
上使用+=
运算符所做的是用current content + new content
替换整个内容的节点,因此所有可能的外部资源都将被重新加载,因为它们是新内容。
为了避免这种情况,您必须使用适当的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>');
相关文章:
- 如何在使用JavaScript或jQuery刷新父页面后保留iframe-src
- 使用php脚本验证访问者的年龄,并在不刷新的情况下根据结果加载iframe
- 在jQuery中的IFrame中提交表单后刷新父窗口
- 在内容刷新或更新时调整iframe的大小
- 从另一个 Iframe 刷新父 Iframe
- 刷新位于不同域中的iframe
- 如果可能的话,刷新后保留iframe url
- 如何等到iframe刷新完成后再执行函数
- 刷新ul中在iframe中找到位置的元素
- 在 iframe 花式框关闭后刷新父窗口
- IE8 - IFRAME 会导致整个页面刷新
- 当我更改 src 时没有刷新浏览器的 iframe
- 刷新 iframe 中的页面
- 刷新 iframe 而不重定向父页面
- 停止 iframe 刷新时闪烁
- CRM 2013 Iframe刷新问题
- 隐藏Iframe刷新Ajax选项
- 当iframe刷新时更改URL
- 在特定时间后使用JavaScript将iFrame刷新到不同的源
- 如果iframe刷新失败,则X