6

我有一串 HTML 标签,可以随时添加或更改。

"<html><body><script language="javascript" src=""></script></body></html>"

是否可以在运行时将该字符串加载到 Iframe 中,就好像它是 HTML 文件一样?

这是针对 Construct 2 的。我有一个可以从 url 加载 HTML 的对象,它还可以插入 HTML,并运行脚本,但不是原样。

4

3 回答 3

6

当然,有几个不同的选择。

通过srcdoc(异步):

iframe.srcdoc = html;

通过数据 URI(异步):

iframe.src = 'data:text/html;charset=utf-8,' + escape(html);

通过document.write(同步,并且在非常旧的浏览器中工作):

var idoc = iframe.contentWindow.document;
idoc.write(html);
idoc.close();
于 2016-08-02T22:53:14.937 回答
4

你可以这样做

document.getElementById('iframe').src = "data:text/html;charset=utf-8," + escape(html);

有关示例,请参见以下小提琴

https://jsfiddle.net/erk1e3fg/

于 2016-08-02T22:16:04.500 回答
2

使用Data URI,(请参阅浏览器支持)这是可能的。描述的格式是

data:[<mime type>][;charset=<charset>][;base64],<encoded data>.

除非字符串具有特定字符,否则您可能不需要对字符串进行 base64 编码。此代码段满足您的需求:

var iframe = document.getElementById('iframe'),
    htmlStr = "<html><body><h1>Hell World</h1></body></html>";
iframe.src = 'data:text/html,'+htmlStr;
<iframe id="iframe" src="blank:"></iframe>

于 2016-08-02T22:12:57.600 回答