How to prevent an iframe from reloading when moving it in the DOM
我的iframe加载了一些内容。 我想在不引起刷新的情况下将其移动到DOM中(我喜欢其中的内容,我想保留它)。
我正在做一些基本的
那可能吗?
在此先感谢您的帮助。
如果您尝试以视觉方式移动它,则可以尝试修改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移动回去