如何使用另一个预先存在的文档对象替换iframe文档,而不使用write()

时间:2014-06-16 15:38:08

标签: javascript html dom yui domdocument

我只想用预先存在的文档对象替换空白的iframe文档。不是可以将write()方法与一起使用的HTML字符串(该解决方案在许多其他答案中,在此处)。我只想要一个文档对象来替换另一个文档。


我的空白iframe:

<iframe src="about:blank" id="myIframe"></iframe>


替换空白iframe文档的常规:

function replaceIframeDoc(objDoc){
    var nod_if    = document.getElementById("myIframe");
    var nod_ifDoc = nod_if.contentWindow.document || nod_if.contentDocument;
    nod_ifDoc     = objDoc;
}


创建了文档对象,并调用以执行替换:
(注意:我将我的文档对象封装在一个简单的对象中......我需要为其他一些不相关的东西做这些...只是为了轻松转移一些属性等等。希望它对我的问题无关紧要!)

var obj_container = new Object;  //just to make easier to do some other stuff
obj_container.document = document.implementation.createHTMLDocument();
obj_container.document.open();
obj_container.document.write("<html>...(some html)...</html>");
obj_container.document.close();
replaceIframeDoc(obj_container.document);

1 个答案:

答案 0 :(得分:0)

根据您需要支持的浏览器,您可以执行以下操作:

var iframe = document.getElementById("myIframe");;
var oldNode = iframe.contentDocument.getElementById("myNode");
var newNode = document.importNode(oldNode, true);
document.getElementById("container").appendChild(newNode);

您可以在此处阅读更多内容:https://developer.mozilla.org/en-US/docs/Web/API/document.importNode