在javascript中实现$(document).ready()函数

时间:2015-11-08 09:03:38

标签: javascript jquery

我是javascript的新手。我想知道以下代码是否是$(document).ready(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();
  }
}

2 个答案:

答案 0 :(得分:0)

没有。简单地测试它是一个微不足道的演示,将证明它不是。它将浏览器锁定在无限while循环中,阻止所有进一步的渲染并阻止文档进入 ready 状态。

答案 1 :(得分:-1)

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

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

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

这就是jQuery(本质上)所做的。如果这个失败,会有相当多的后备。

我测试了它,似乎没有正常工作(甚至工作,就此而言)。