尽管将IFRAME移动到新打开的窗口是没有用的(参见类似问题,IFRAME将重新加载),但可以移动IFRAME内容,例如。顶级HTML节点到另一个窗口。例如
iframe_html_node=document.getElementById('my_iframe').contentDocument.firstChild;
new_window=window.open();
new_window.document.replaceChild(iframe_html_node,new_window.document.firstChild);
当然,如果只需要部分,也可以替换更深层次的DOM。
但是,有一个显示停止:当新窗口打开为空时,它没有有效的document.location
设置,因此它的内容链接和资源没有基本URI,它将在将所有内容变为空白(在Chrome中测试),例如。 CSS和图像都坏了。
当然可以在复制之前将new_window.document.location
设置为IFRAME,但如果包含JS框架附加其处理程序等,则会触发很多混乱。此外,它还意味着竞争条件,我们必须对替换HTML节点的时间保持警惕,因为它可能会被加载文档覆盖。
有什么建议吗?