动态创建具有给定HTML的iframe

我正在尝试从JavaScript创建iframe并用任意HTML填充它,如下所示:

var html = '<body>Foo</body>';

var iframe = document.createElement('iframe');

iframe.src = 'data:text/html;charset=utf-8,' + encodeURI(html);

我希望iframe然后包含一个有效的窗口和文档。但是,事实并非如此:

console.log(iframe.contentWindow); 空值

我在俯视什么?

回答:

设置javascript中src新创建的时iframe,除非将该元素插入文档中,否则不会触发HTML解析器。然后更新HTML,将调用HTML解析器并按预期处理属性。

var iframe = document.createElement('iframe');

var html = '<body>Foo</body>';

iframe.src = 'data:text/html;charset=utf-8,' + encodeURI(html);

document.body.appendChild(iframe);

console.log('iframe.contentWindow =', iframe.contentWindow);

同样,此问题也回答了您的问题,请务必注意,该方法与某些浏览器存在兼容性问题,请参阅@mschr的跨浏览器解决方案。

以上是 动态创建具有给定HTML的iframe 的全部内容, 来源链接: utcz.com/qa/407136.html

回到顶部