使用 JavaScript 将字符串 if HTML 加载到 iframe
Loading a string if HTML into an iframe using JavaScript
我有一串 HTML 标签,我可以随时添加或更改它们。
"<html><body><script language="javascript" src=""></script></body></html>"
是否可以在 运行 时将该字符串加载到 iframe 中,就好像它是 HTML 文件一样?
这是针对 Construct 2 的。我有一个可以从 url 加载 HTML 的对象,它还可以插入 HTML 和 运行 脚本,但不是现在这样。
使用 Data URI, (see browser support) 这是可能的。所描述的格式是
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>
你可以用
document.getElementById('iframe').src = "data:text/html;charset=utf-8," + escape(html);
示例见下面fiddle
当然,有几个不同的选择。
通过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();
我有一串 HTML 标签,我可以随时添加或更改它们。
"<html><body><script language="javascript" src=""></script></body></html>"
是否可以在 运行 时将该字符串加载到 iframe 中,就好像它是 HTML 文件一样?
这是针对 Construct 2 的。我有一个可以从 url 加载 HTML 的对象,它还可以插入 HTML 和 运行 脚本,但不是现在这样。
使用 Data URI, (see browser support) 这是可能的。所描述的格式是
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>
你可以用
document.getElementById('iframe').src = "data:text/html;charset=utf-8," + escape(html);
示例见下面fiddle
当然,有几个不同的选择。
通过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();