如何检查文件是否准备好?

时间:2010-05-12 14:27:31

标签: asp.net jquery

如何通过jQuery检查文档是否已准备好(所有js文件已加载,DOM已准备好)? 有旗帜吗?

如果某些文件未完全下载,则会遇到问题,并且该事件由用户引发。我想检查内部事件处理程序。

我正在使用jQuery,asp.net

10 个答案:

答案 0 :(得分:26)

这没有记录,我不认为,但如果你看一下$(document).ready的jQuery代码:

// If the DOM is already ready
if ( jQuery.isReady ) {
  // Execute the function immediately
  fn.call( document, jQuery );
} // ...

因此,对于可能发生变化的方式,您可以使用$.isReadyjQuery.isReady

更好的方法是使用$(document).ready排队。 e.g:

function myClickHandler(event) {
  // do stuff

  $(document).ready(function() {
    // Do this immediately if DOM is loaded, or once it's loaded otherwise.
  }
}

基本上,这使用ready函数作为保护。您可以使用ready函数代替if语句。当然,就绪函数具有在加载DOM时运行的行为。如果你的行为只是想要在加载时发生某些事情,但是如果还没有加载它就永远不会这样做,那么使用上面的标志或设置你自己的标志是更好的方法。自己设定:

$(document).ready(function() {
  window.domIsReady = true;
}

if (window.domIsReady) {
  // do stuff
}

创建自己的可能更好,因为jQuery.isReady似乎没有记录,因此可能不受支持,并且可能随时更改。

答案 1 :(得分:7)

$(document).ready(function() {
  // Handler for .ready() called.
});

答案 2 :(得分:5)

这是一个棘手的问题吗? :)

您正在寻找的是document.ready

示例:

  $(document).ready(function() {

   alert ("document is ready!");

  });

答案 3 :(得分:3)

一个简单的函数调用,看看基数是否被加载。

   jQuery(document).ready(function(){ 
      alert("howdy");  
    }); 

替代方案,找出它是否已加载(更好)

<script type="text/javascript">  
if (typeof jQuery == 'undefined')  
{  
    alert('not loaded'); 
}  
</script>

对于那些短暂的坚果:(不需要任何类型:)

<script type="text/javascript">  
    if(!this.$) 
    {  
        alert('not loaded'); 
    }  
    </script> 

答案 4 :(得分:2)

http://api.jquery.com/ready/ - 示例位于页面底部

答案 5 :(得分:1)

Jquery有这个:

$(document).ready(function(){ 
    alert('document ready here') 
}); 

在$(document).ready()块中包装任何操作DOM的jquery是相当普遍的做法,以确保在继续之前DOM完全存在。

答案 6 :(得分:1)

我认为你的追求是:

$(window).load(function(){
   alert("All content has been downloaded to the web browser")  
  }); 

我不久前在那里做过blog

答案 7 :(得分:0)

认为document.ready代码只在文档和所有加载文件时触发。从来没有遇到过这个问题。

如果我遇到问题,我会在所有需要的文件中放置一个var并检查它们是否相加,将所有代码放在一个文件中。

请原谅我没有发表明确答案

答案 8 :(得分:0)

您是否正在寻找本地window.onload事件?当页面上的所有内容(包括脚本,图像,样式表)都已加载时,它就会被触发。

function doStuff() {
    alert("The DOM and everything inside have loaded");
}
window.onload = doStuff; 

另请参阅:addLoadEvent

答案 9 :(得分:0)

jquery 1.8.x .ready() api page开始,似乎使用以下语法绑定事件处理函数可以解决问题:

$(document).ready(handler);

即使'ready'事件已被触发,也会调用'handle'函数。