Javascript jQuery.load()是否在<;之后加载;脚本>;内容是否已加载?

Javascript jQuery.load()是否在<;之后加载;脚本>;内容是否已加载?,javascript,jquery,load,Javascript,Jquery,Load,两个问题: jQuery.load()是否在的内容完全下载后运行 如果在这种情况下,文档中有一个将动态注入另一个,那么load()是在下载第二个脚本的内容后运行,还是在加载原始的非动态内容后运行 谢谢 问题的例子如下: <html> <head> <script src="myscrip1.js"></script> <script> $(document).load( myscript2.functionA ); </scri

两个问题:

  • jQuery.load()
    是否在
    的内容完全下载后运行

  • 如果在这种情况下,文档中有一个
    将动态注入另一个
    ,那么
    load()
    是在下载第二个脚本的内容后运行,还是在加载原始的非动态内容后运行

  • 谢谢


    问题的例子如下:

    <html>
    <head>
    <script src="myscrip1.js"></script>
    <script>
    $(document).load( myscript2.functionA );
    </script>
    </head>
    </html>
    
    
    $(document).load(myscript2.functa);
    
    其中myscript.js将向dom中注入myscript2.js。 其中myscript2.js包含函数myscript2.function

    显然,我想在myscript2.js完全加载后运行myscript2.function


    :)

    如果将
    加载
    事件处理程序放入标准的
    文档就绪
    事件处理程序包装中,它将确保首先加载外部脚本。你应该考虑这个标准的做法。解决方案很简单:

    <script src="myscrip1.js"></script>
    <script>
    $(document).ready(function() {
      $(document).load( myscript2.functionA );
    });
    </script>
    
    
    $(文档).ready(函数(){
    $(document).load(myscript2.functa);
    });
    
    当初始HTML中引用的所有资源都已下载(或出现错误时超时)时,将触发document ready事件。如果您动态地注入对另一个脚本的引用(如facebook api、google analytics等),那么它的就绪性与document ready事件的关系是未定义的

    如果要检查外部脚本是否已准备就绪,可以检查它创建的对象是否已准备就绪

    
    var startafterjqueryladed=函数(){
    if(jQuery的类型==“未定义”){
    setTimeout(startAfterJqueryLoaded,100);
    返回;
    }
    //jQuery已经准备好了,做点什么吧
    }
    startAfterJqueryLoaded();
    
    或者,如果您可以控制动态注入的脚本,您可以建立一个全局函数,它将在准备好时调用该函数

    <script type="text/javascript">
      window.dynamicScriptIsReady = function(){
        // do something
      }
    </script> 
    
    
    // Dynamic.js
    // ...Setup whatever
    
    window.dynamicScriptIsReady();
    
    
    window.dynamicScriptIsReady=函数(){
    //做点什么
    }
    //Dynamic.js
    //…设置什么
    window.dynamicScriptIsReady();
    
    请提供一个示例来帮助解释您所说的内容。您如何调用.load()?根据我的经验,它将在被称为的地方运行。因此,如果在加载动态脚本之前调用.load(),它将在加载动态脚本之前运行,但是,如果在加载动态脚本之后调用它,它应该在加载动态脚本之后运行。这不起作用。因为myscript2.js将在$(document.ready)之后运行$文件(加载)。因此,myscript2.function将是未定义的。原因是$document.ready将在myscript1就绪并加载后执行,这是原始HTML文档中的代码。动态脚本代码不会是ready&load将处理的HTML文档的一部分。
    <script type="text/javascript">
      window.dynamicScriptIsReady = function(){
        // do something
      }
    </script> 
    
    
    // Dynamic.js
    // ...Setup whatever
    
    window.dynamicScriptIsReady();