2013-05-20 39 views
3

如果DOM已加载,我有一段JS代码需要确定。我知道有执行JS代码的几种方法,当DOM加载,如:如何知道文档是否已加载

$(document).ready(function() { ... }); // Jquery version 

document.body.onload = function() { ... } // Vanila JS way 

我要寻找一些方法,它看起来像

function isDOMLoaded() { 
    // Do something to check if DOM is loaded or not 
    // return true/false depending upon logic 
} 

PS:更新(邮政的答案接受) 我碰巧看到jquery也使用相同的方法来检查DOM是否已加载。看看在Implementation of jquery.ready() here

bindReady: function() { 
    if (readyBound) { 
     return; 
    } 

    readyBound = true; 

    // Catch cases where $(document).ready() is called after the 
    // browser event has already occurred. 
    if (document.readyState === "complete") { 
     return jQuery.ready(); 
    } 

    ... 
+0

可能是你可以设置DOM负载的标志,检查标志,以查看是否DOM已加载 –

+0

其实,我的javascript代码进入页面在运行时所以我不能绑定上的document.ready事件。我只需要检查Yeahman回答的一些布尔变量类型的事情。 – sachinjain024

回答

13
function isDOMLoaded(){ 
return document.readyState == 'complete'; 
} 
2

这个怎么样?

var flgDOMLoaded=false; //Set a global variable 
$(document).ready(function() { 
    flgDOMLoaded= true; 
    // Some code 
}); 

function isDOMLoaded() { 
    return flgDOMLoaded; // return it. 
    //You don't need this function at all. You could just access window.flgDOMLoaded 
} 
3

您可以使用类似这样

function isLoaded() { 
    return (document.readyState === 'ready' || 
      document.readyState === 'complete') 
} 

检查readycomplete状态。

ready仅在短时间内出现,但确实反映DOM何时准备就绪。当页面完全加载时,状态变为“完成”。如果您碰巧只检查就绪功能将失败,所以我们也检查这个状态。

相关问题