我像这样动态生成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。
知道为什么吗?
答案 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等中正常工作。...