Javascript 如何替换iframe的全部内容?

Javascript 如何替换iframe的全部内容?,javascript,jquery,Javascript,Jquery,没有收到任何令人满意的答案,所以我再次询问 我可以这样得到我的iframe: var iframe = document.getElementById('preview'); var win = iframe.contentWindow; var doc = win.document; doc.write('<!DOCTYPE html><html><head><link rel="stylesheet" type="text/css" href="r

没有收到任何令人满意的答案,所以我再次询问

我可以这样得到我的iframe:

var iframe = document.getElementById('preview');
var win = iframe.contentWindow;
var doc = win.document;
doc.write('<!DOCTYPE html><html><head><link rel="stylesheet" type="text/css" href="reset.css"></head><body>blah blah</body></html>');
然后像这样为其编写一些初始HTML:

var iframe = document.getElementById('preview');
var win = iframe.contentWindow;
var doc = win.document;
doc.write('<!DOCTYPE html><html><head><link rel="stylesheet" type="text/css" href="reset.css"></head><body>blah blah</body></html>');
这很有效,但现在我想用一些新内容来替换整个内容。我该怎么做

说清楚了,我说的整个事情也是指。我需要在那里链接一些外部JS和CSS


优选地,这还包括:,但是在这一点上它不是必需的。

您可以简单地从DOM中删除旧的iframe节点并创建一个包含新内容的新节点。

您可以简单地从DOM中删除旧的iframe节点并创建一个包含新内容的新节点。

我相信使用innerHTML应该可以:

doc.documentElement.innerHTML = "<script src='blah.js'></script><style></style>"

我相信使用innerHTML应该可以:

doc.documentElement.innerHTML = "<script src='blah.js'></script><style></style>"

啊…这解释了为什么我的尝试不起作用。必须在documentElement上执行此操作!这似乎行得通,但我不能用这种方法设置时间,对吗?基本上,这将替换no的内容?元素本身不可修改,但文档具有属性iframe.contentWindow.document.doctype,其属性类似于doc.doctype.systemId。属性是只读的,因此可能不建议尝试更改doctype dynamicallyAh…这解释了为什么我的尝试不起作用。必须在documentElement上执行此操作!这似乎行得通,但我不能用这种方法设置时间,对吗?基本上,这将替换no的内容?元素本身不可修改,但文档具有属性iframe.contentWindow.document.doctype,其属性类似于doc.doctype.systemId。属性是只读的,因此可能不建议尝试更改doctype dynamicallyYes,理论上我可以替换整个iframe,但仅替换iframe的文档不是更有效吗?可以这样做吗?将doc.documentElement.outerHTML设置为某物会给出一条消息:不允许修改\u错误:DOM异常7,因此您不能替换整个文档,但元素下面的任何内容都是可能的,@Esailija:很高兴知道!在你的帮助下,我想我现在已经知道了我需要知道的一切我相信这使得Darin的解决方案成为最有效的答案。是的,理论上我可以替换整个iframe,但是仅仅替换iframe的文档不是更有效吗?可以这样做吗?将doc.documentElement.outerHTML设置为某物会给出一条消息:不允许修改\u错误:DOM异常7,因此您不能替换整个文档,但元素下面的任何内容都是可能的,@Esailija:很高兴知道!在你的帮助下,我想我现在已经知道了我需要知道的一切我相信这使达林的解决方案成为最有效的答案。@RobG:事实上,不是。这里贴的两个答案与那里贴的完全不同,而且它们确实有效。为什么我会有不同的期待?因为上一个问题发布已经半年了,这里有一个新的用户群,而且因为我不能有效地反驳一个老问题。@RobG:还有,Esailija发布了一些我不知道的、在其他答案中也没有出现的有见地的提示。你的问题与差不多同一时间发布的一个非常相似的问题混淆了。@RobG:事实上,没有。这里发布的两个答案与那里发布的完全不同,而且它们确实有效。为什么我会有不同的期待?因为上一个问题发布已经半年了,这里有了一个新的用户群,而且因为我不能有效地反驳一个老问题。@RobG:还有,Esailija发布了一些我不知道的、在其他答案中也没有出现的有见地的提示。你的问题和一个非常类似的问题在同一时间发布了吗。