0

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

知道为什么吗?

4

2 回答 2

2

这有效:

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

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

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

于 2012-07-04T15:25:51.097 回答
0

没有这样的必要。您不需要使用 timeout 或任何东西让 firefox 表现得像 chrome。在您的代码中,只需将源设置为 'javascript:' 即可。示例如下:

iframe.src = 'javascript:';

或者只是使用:

iframe.src = 'about:';

不要设置为空白。在 firefox、chrome、opera 等中可以正常工作......

于 2018-12-11T21:27:27.047 回答