在iframe上使用javascript时Firefox的奇怪行为

mck*_*k89 3 javascript iframe firefox behavior

我用这个简单的脚本在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>
Run Code Online (Sandbox Code Playgroud)

这段代码创建一个空白的iframe并将其附加到当前页面的主体,然后创建一个包含简单文本的div元素,并将其附加到iframe的主体.

在每个浏览器(IE,Safari,Chrome,Opera)中都可以使用,但是在Firefox中(我使用的是版本3.6.3),div不会出现在iframe中,也不会引发任何错误.

我认为某处肯定会有一些愚蠢的错误,但我找不到它,你有什么想法吗?

PS:这些window.setTimeout只是确保在页面和iframe中加载dom的简单方法.

Cas*_*nge 5

您需要在超时中包装iframe文档的检索.

        window.setTimeout(function(){
            var doc=ifr.contentWindow.document || ifr.contentDocument;
            var div=doc.createElement("div");
            div.innerHTML="test";
            doc.body.appendChild(div);
        },500);
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/xeGSe/1/