关于javascript:如何在DOM中移动iframe时防止其重新加载

How to prevent an iframe from reloading when moving it in the DOM

我的iframe加载了一些内容。 我想在不引起刷新的情况下将其移动到DOM中(我喜欢其中的内容,我想保留它)。

我正在做一些基本的node.appendChild(iframe)来完成这项工作。

那可能吗?

在此先感谢您的帮助。


如果您尝试以视觉方式移动它,则可以尝试修改CSS以使用绝对定位或其他一些调整。

但是,如果您试图将其实际从DOM中拉出并将其插入其他位置,则将无法避免重新加载。


我不这么认为,因为当将iframe放回DOM中时,浏览器将对其进行重新渲染/重新加载。

http://polisick.com/moveNode.php可以更好地说明这一点。

要移动节点,请调用removeNode将其从树中移出并进入内存,然后appendNode将其"粘贴"回您想要的位置。


我在jQueryUI对话框中的iFrame遇到类似的问题。 jQuery将div(包含我的iFrame)从DOM中移出,并且由于我仍然想要回发(duh),因此不得不将其移回。阅读本文和其他几篇文章后,我想出了一个解决方案。

我注意到的一个简单想法是,iFrame在移动时会重新加载。因此,在将div移动回DOM之后,我将iFrame添加到了对话框容器(div)中。这是可行的,因为jQuery不在乎容器中的内容。这是一些示例代码:

对话框打开/关闭功能:

打开:

1
2
3
4
function () {
    $(this).parent().appendTo("form").css("z-index","9000"); //Move the div first
    $(this).append('<iframe id="iFrame" allowtransparency="true" frameborder="0" width="100%" height="100%" src="somePage.aspx"></iframe>');}, //then add the iframe
}

关:

1
2
3
4
5
function() {
    $(this).empty(); //clear the iframe out because it is added on open,
    //if you don't clear it out, you will get multiple posts
    $(this).parent().appendTo("divHidden"); //move the dialog div back (good house-keeping)
}

的HTML:

1
 

您需要将iHTML节点保存在iframe下,然后将iframe移动回去