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