2015-11-08 76 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(本質上)所做的。如果這個失敗了,那麼會有很多後備。

我測試了一下,似乎沒有正常工作(甚至沒有工作)。

相關問題