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);

問題は、DOMで利用可能になる前にiframeドキュメントにアクセスしようとしていたことでした。

遅延は重要ではありません。重要な点は、ブラウザがjsスレッドの動作が終了した後にのみ表示(およびFirefoxの場合は一部のjsアクセス可能オブジェクト)を更新することです。

于 2012-07-04T15:25:51.097 に答える
0

そのようなことは必要ありません。FirefoxがChromeのように動作するために、タイムアウトなどを使用する必要はありません。コードでソースを「javascript:」に設定するだけで実行できます。以下の例:

iframe.src = 'javascript:';

または単に使用します:

iframe.src = 'about:';

空白で設定しないでください。Firefox、Chrome、Operaなどで問題なく動作します。

于 2018-12-11T21:27:27.047 に答える