2015-11-08 89 views
-3

我是javascript的新手。我想知道,如果下面的代码是$(文件)。就绪(INIT)

<html> 
 
    <head> 
 
    <script type="text/javascript"> 
 
     function documentReady(){ 
 
     while(document.readyState != "interactive"){ 
 
      //do nothing 
 
     } 
 
     init(); 
 
     } 
 
     function init(){ 
 
     } 
 
    </script> 
 
    </head> 
 
    <body> 
 
    <!-- other html elements --> 
 
    <script> documentReady(); </script> 
 
    </body> 
 
</html>

我完全理解下面的代码是正确执行的有效执行...

document.onreadystatechange = function() { 
 
    if (document.readyState == "interactive") { 
 
    init(); 
 
    } 
 
}

+0

否浏览器和DOM主要是基于事件的。您不必轮询某些元素的状态,而是注册一个事件处理程序并等待您的回调被调用。这正是jQuery的$(document).ready()所做的。 – haim770

+0

http://stackoverflow.com/a/9899701/1190388 – hjpotter92

+0

嘿,谢谢你清除我的怀疑! –

回答

0

号只需测试它是一个TRIV证明不是的证明。它将浏览器锁定在无限循环中,阻止所有进一步的渲染并防止文档进入准备好状态。

-1

有几种。让我为你做一个快速的。

var onDomLoaded = function() { 
    console.log("DOM is ready"); 
} 

document.addEventListener('DOMContentLoaded', onDomLoaded, false); 

这是jQuery(本质上)所做的。如果这个失败了,那么会有很多后备。

我测试了一下,似乎没有正常工作(甚至没有工作)。

相关问题