Javascript在iframe文档.Write覆盖父文档



我想通过Javascript将HTML作为字符串加载到iframe。这样的:

$('#iframe1').contents().find('html').html("<h1>This is an iframe</h1>");

这工作得很好,直到我发现,这里面的HTML即将到来的Javascript像document.write写到错误的文档->父!

这是一个普朗克来展示它:http://plnkr.co/edit/YQAqqSDCVKnP3uhLj4lF?p=preview

如果我通过src将相同的HTML加载到iframe作为外部文档,document.write将转到iframe(而不是父级),这就是我所期望的。

有没有什么真知灼见?我如何告诉浏览器在执行Javascript之前正确创建iframes文档作用域?


PS:这是为了预览的目的,所以我注入了一个(可信的!)源的html代码,但在该代码中,文档。

好的。srcdoc在这里很有用。

$('#iframe1').attr({srcdoc:intrusiveHTML});

我更新了普朗克。

使用srcdoc, Javascript不会在文档作用域上出错。

它不会在IE (http://caniuse.com/#feat=iframe-srcdoc)中工作,所以它可能有助于额外使用Polyfill:https://github.com/jugglinmike/srcdoc-polyfill

但是我还没有测试

document.getElementById('iframe1').contentWindow.document.write代替document.write。因为当你指向文档时,它将使用主窗口文档,所以我们需要指出需要使用哪个iframe文档。

最新更新