2016-03-21 101 views

回答

5
時,當HTML被加載的DOM /文檔對象模型被加載

簡單anwser ..

Docs

代碼包含在$(文件)。就緒()將只一旦頁面運行 文檔對象模型(DOM)已準備好執行JavaScript代碼。


我也解釋得很好這裏:

https://discuss.codecademy.com/t/window-onload-vs-document-ready/19000

在哪裏,我說:

的jQuery的document.ready將運行你的代碼時,HTML是一切準備就緒,但在圖像和其他資源完成之前。這是您可以使用JavaScript更改DOM的最早時間,因此它被廣泛使用。在谷歌瀏覽器等現代瀏覽器中,它被替換爲DOMContentLoaded3。再次更多信息在這裏。

因此,通過您的圖片: enter image description here

$的document.ready(FN)將在互動臉beggining被加載時,DOM有 「已完成」 載入中...

0

什麼時候$ document.ready()得到執行?

.ready()可以被執行多次

.ready(handler)
返回:jQuery
描述:指定要執行時DOM完全加載的函數。

如果在初始化DOM後調用.ready(),則將立即執行新的 處理程序。

.ready()方法只能在與當前文檔匹配的 的jQuery對象上調用,所以選擇器可以省略。

n = -1; 
 

 
function ready() { 
 
    document.getElementsByTagName("p")[0].textContent += "ready " + ++n + "\n"; 
 
} 
 

 
$(document).ready(ready); 
 

 
$(document).ready(function() { 
 
    ready(); 
 
    $(document).ready([function() { 
 
    ready() 
 
    }, 
 
    function() { 
 
     $(document).ready(function() { 
 
     ready(); 
 
     $(document).ready([ 
 
      function() { 
 
      ready() 
 
      }, function() { 
 
      ready() 
 
      if (n === 5) $(document).ready(function() {ready()}) 
 
     }]); 
 
     
 
     }) 
 
    } 
 
    ]) 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"> 
 
</script> 
 

 
<body> 
 
    <p></p> 
 
</body>

見soruce在ready.js

if (document.readyState === "complete" || 
    (document.readyState !== "loading" && !document.documentElement.doScroll)) { 

    // Handle it asynchronously to allow scripts the opportunity to delay ready 
    window.setTimeout(jQuery.ready); 

} else { 

    // Use the handy event callback 
    document.addEventListener("DOMContentLoaded", completed); 

    // A fallback to window.onload, that will always work 
    window.addEventListener("load", completed); 
} 
相關問題