【问题标题】:How to replace iframe document with another pre-existing document object, without using write()如何在不使用 write() 的情况下用另一个预先存在的文档对象替换 iframe 文档
【发布时间】:2014-06-16 15:38:07
【问题描述】:

我只想用预先存在的文档对象替换空白 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);

【问题讨论】:

标签: javascript html dom yui domdocument


【解决方案1】:

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

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

【讨论】:

  • 我需要主要支持 webkit 和 safari。 importNode() 似乎是最好的方法......但是,我不确定它是否真的适合文档级元素,是吗?
猜你喜欢
  • 1970-01-01
  • 2017-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-26
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
相关资源
最近更新 更多