在Firefox中动态渲染iFrame

时间:2012-07-04 15:22:11

标签: javascript iframe

我像这样动态生成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。

知道为什么吗?

2 个答案:

答案 0 :(得分:2)

这有效:

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可访问对象)。

答案 1 :(得分:0)

不需要那样的东西。您不需要使用超时或任何其他使Firefox像chrome一样运行的功能。在您的代码中,只需将源设置为“ javascript:”即可。下面是示例:

iframe.src = 'javascript:';

或仅使用:

iframe.src = 'about:';

不要设置为空白。可以在Firefox,Chrome,Opera等中正常工作。...