代码之家  ›  专栏  ›  技术社区  ›  Lalit

如何检查文档是否就绪?

  •  22
  • Lalit  · 技术社区  · 14 年前

    如何通过jquery检查文档是否就绪(所有JS文件都已加载,DOM是否就绪)? 有什么旗子吗?

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

    我正在使用jquery,asp.net

    10 回复  |  直到 12 年前
        1
  •  26
  •   Antonio Salazar Cardozo    14 年前

    我不认为这是文档化的,但是如果您查看jquery代码 $(document).ready :

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

    因此,对于可能改变的方法,您可以使用 $.isReady jQuery.isReady .

    更好的方法是使用 $(文档)。就绪 排队。例如。:

    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后运行。如果您的行为只希望在加载时发生某些事情,而在尚未加载DOM时从不这样做,那么使用上面的标志或设置自己的标志是更好的方法。设置自己的:

    $(document).ready(function() {
      window.domIsReady = true;
    }
    
    if (window.domIsReady) {
      // do stuff
    }
    

    创建自己的可能更好,因为 杰奎里斯 似乎没有记录,因此可能不受支持,可能随时更改。

        2
  •  7
  •   Gabe    14 年前
    $(document).ready(function() {
      // Handler for .ready() called.
    });
    
        3
  •  5
  •   Pekka    14 年前

    这是个骗人的问题吗?:)

    你要找的是 document.ready

    例子:

      $(document).ready(function() {
    
       alert ("document is ready!");
    
      });
    
        4
  •  3
  •   Mark Schultheiss    14 年前

    一个简单的函数调用来查看是否均匀地加载了基。

       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> 
    
        5
  •  2
  •   MartyIX    14 年前

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

        6
  •  1
  •   Mathew    14 年前

    jquery有:

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

    在$(document.ready()块中包装处理DOM的任何jquery,以确保在继续之前DOM都在那里,这已经成为一种常见的做法。

        7
  •  1
  •   Glenn Packer    12 年前

    我想你接下来要做的是:

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

    我在那里做了一个 blog 大约不久前:

        8
  •  0
  •   John    14 年前

    以为document.ready代码只在加载文档和所有文件时触发。我自己从来没有遇到过这样的问题。

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

    原谅我没有给出明确的答案

        9
  •  0
  •   Olly Hodgson    14 年前

    你在找本地人吗 window.onload 有机会吗?当页面上的所有内容(包括脚本、图像、样式表)都已加载时,它就会被激发。

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

    参见: addLoadEvent .

        10
  •  0
  •   Roei Bahumi    12 年前

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

    $(document).ready(handler);
    

    将调用“handle”函数,即使已激发“ready”事件。