1

这似乎很奇怪。在 IE 中,我正在等待 $(document).ready()。文档准备好后,我控制台记录 document.body 并且它为空。如果我将它包装在超时中,它就在那里?不应该 document.body 好继续准备好文件吗?例如:

// doesn't work
$(x.document).ready( function() { 
  x.document.body.innerHTML = '<div style="background-color: 000; color: #FF0000  ;">Cyril Figgis</div>';
});


// works
$(x.document).ready( function() { 
  setTimeout( function() { 
    x.document.body.innerHTML = '<div style="background-color: #000; color: #FF0000  ;">Hello!</div>';
  }, 1000 );
} );

document.body 在一秒钟后定义,但不是立即定义?

4

1 回答 1

0

我只是在研究这个,因为我在 IE9 上运行相同的问题,我认为这个 2 岁的 jQuery 错误条目可能很有趣:http ://bugs.jquery.com/ticket/12282

从那里引用:“在提供的示例中,您依赖于 .ready() 的异步执行,这不是保证。这是因为 .ready() 在 1.8 中稍早触发,因为它对DOM 准备就绪。”

您的代码与我的代码相似 - 我们假设当文档实际准备好时,ready() 将异步执行,但正如 jQuery 专家所说,情况可能并非总是如此。

于 2013-10-14T12:17:36.093 回答