我想通过 Javascript 将 HTML 作为字符串加载到 iframe
中。 像这样:
$('#iframe1').contents().find('html').html("<h1>This is an iframe</h1>");
这很有效,直到我发现,在这个 HTML 中,像 document.write
这样的 Javascript 正在写入错误的文档 -> 父文档!
这是一个 Plunker 来展示它: http://plnkr.co/edit/YQAqqSDCVKnP3uhLj4lF?p=preview
如果我通过 src 将相同的 HTML 作为外部文档加载到 iframe
,则 document.write
会转到 iframe
(而不是给 parent ),这正是我所期待的。
有一些见解吗? 如何告诉浏览器在执行 Javascript 之前正确创建 iframe 文档范围?
<小时 />PS:它的目的是为了预览,所以我注入(inject)了(可信!)源的 HTML 代码,但在该代码中,允许 document.write。
请您参考如下方法:
好的。 srcdoc
在这里很有帮助。
$('#iframe1').attr({srcdoc:intrusiveHTML});
我更新了 Plunker。
使用 srcdoc
,Javascript 不会因文档范围而出错。
它在 IE ( http://caniuse.com/#feat=iframe-srcdoc ) 中不起作用,因此另外使用 Polyfill 可能会有所帮助: https://github.com/jugglinmike/srcdoc-polyfill
但我还没有测试过。