私はこの単純なスクリプトでFirefoxの奇妙な振る舞いに遭遇しました:
<html>
<head>
<script type="text/javascript">
window.setTimeout(function(){
var ifr=document.createElement("iframe");
ifr.src="about:blank";
document.body.appendChild(ifr);
var doc=ifr.contentDocument || ifr.contentWindow.document,
div=doc.createElement("div");
div.innerHTML="test";
window.setTimeout(function(){
doc.body.appendChild(div);
},500);
},500);
</script>
</head>
</html>
このコードは、空白のiframeを作成し、それを現在のページの本文に追加します。次に、単純なテキストを含むdiv要素を作成し、それをiframeの本文に追加します。
すべてのブラウザ(IE、Safari、Chrome、Opera)で機能しますが、Firefox(バージョン3.6.3を使用)では、divがiframe内に表示されず、エラーはスローされません。
どこかにバカなエラーがあるに違いないと思いますが、見つかりません。何かアイデアはありますか?
PS:これらwindow.setTimeout
は、domがページとiframeに読み込まれていることを確認するための簡単な方法です。