我想通过 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

但我还没有测试过。


评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!