$(document).ready但是在IE document.body中仍然是null

时间:2012-07-20 21:11:10

标签: jquery internet-explorer document ready

这看起来很奇怪。在IE中我正在等待$(document).ready()。文档准备好后,我控制日志document.body,它是null。如果我把它包裹在超时中,它就在那里?不应该记录文件准备好吗?举个例子:

// 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是在一秒之后定义的,但不是立即定义的?

1 个答案:

答案 0 :(得分:0)

我正在研究这个,因为我在IE9上遇到了同样的问题,我认为这个2年前的jQuery错误条目可能很有趣:http://bugs.jquery.com/ticket/12282

从那里引用:“在提供的示例中,您依赖于.ready()的异步执行,这不是一个gaurantee。这是因为.ready()在1.8之前稍微触发,因为它执行了对DOM准备就绪的新检查。“

你的代码与我的代码相似 - 我们假设ready()将在文件实际准备就绪时执行asynch,但正如jQuery人所说的那样情况可能并非总是如此。