在 Firefox 中动态渲染 iFrame

Render an iFrame dynamically in Firefox

本文关键字:iFrame 动态 Firefox      更新时间:2023-09-26

我像这样动态生成一个 iFrame

var iframe=document.createElement('iframe');
document.body.appendChild(iframe);
var iframedoc=iframe.contentDocument||iframe.contentWindow.document;
iframedoc.body.innerHTML="HI";

小提琴:http://jsfiddle.net/Pbj7S/

它适用于Google Chrome,Opera,Safari,但不适用于Firefox。

知道为什么吗?

这有效:

var iframe=document.createElement('iframe');
document.body.appendChild(iframe);
setTimeout(function(){
    var iframedoc=iframe.contentDocument||iframe.contentWindow.document;
    iframedoc.body.innerHTML="HI";
}, 10);

问题是您尝试在 DOM 中可用之前访问 iframe 文档。

延迟并不重要,重要的是浏览器仅在 js 线程完成工作后更新显示(在 Firefox 的情况下,还有一些 js 可访问的对象)。

这样的事情是没有必要的。您无需使用超时或任何东西即可让 Firefox 表现得像 chrome。在你的代码中,只需将源代码设置为"javascript:"就可以了。示例波纹管:

iframe.src = 'javascript:';

或仅使用:

iframe.src = 'about:';

不要设置为空白。在火狐,铬,歌剧等中可以正常工作。