在Javascript文件中加载和执行jQuery

在Javascript文件中加载和执行jQuery,javascript,jquery,Javascript,Jquery,我的问题类似于。但我觉得答案不完整,问题以一种不确定的方式结束 我正在开发一个Javascript应用程序,供我的用户在他们的网站上使用。我只希望他们必须把一个javascript包含在他们的网页顶部,以便使用我的应用程序 我的javascript需要jQuery才能运行 所以我们的目标是 检查jQuery是否已加载 如果尚未加载jQuery,请加载它 执行需要jQuery运行的javascript 我想在同一个脚本中完成以上三个步骤 这是我最初尝试的 function loa_j(){ if

我的问题类似于。但我觉得答案不完整,问题以一种不确定的方式结束

我正在开发一个Javascript应用程序,供我的用户在他们的网站上使用。我只希望他们必须把一个javascript包含在他们的网页顶部,以便使用我的应用程序

我的javascript需要jQuery才能运行

所以我们的目标是

  • 检查jQuery是否已加载
  • 如果尚未加载jQuery,请加载它
  • 执行需要jQuery运行的javascript
  • 我想在同一个脚本中完成以上三个步骤

    这是我最初尝试的

    function loa_j(){
     if (typeof jQuery === "undefined") {
     var newscript = document.createElement('script');
     newscript.type = 'text/javascript';
     newscript.async = true;
     newscript.src = 'http://code.jquery.com/jquery-latest.min.js';
     (document.getElementsByTagName('head')[0]||document.getElementsByTagName('body')[0]).appendChild(newscript);
     }
    }
    
    loa_j();
    $(document).ready(function(){
    //...Code That Never Fired
    }
    
    这不起作用,因为javascript不会等待jQuery加载。它确实加载jQuery,只是速度不够快

    这是我的另一个解决方案,这一个有效,但我挠头想知道这是否真的是最好的方法来做到这一点

    function loa_j(){
    if (typeof jQuery === "undefined") {
    (function(a,b){function G(a){var b=F[a]={.... //Entire jQuery copy and pasted in :D
    }
    }
    
    因此,通过将整个jQuery复制并粘贴到该函数中,代码实际上可以工作

    这真的是最好的方法吗?

    像这样编辑

    $(document).ready(function(){
    loa_j();
    //...Code That Never Fired
    }
    
    像这样编辑

    $(document).ready(function(){
    loa_j();
    //...Code That Never Fired
    }
    

    在本例中,您必须使用计时器检查库是否存在,然后执行代码。看这把小提琴:


    在本例中,您必须使用计时器检查库是否存在,然后执行代码。看这把小提琴:


    您可以尝试这样做,它基本上会等待jquery加载,然后执行函数。如果可以的话,静态加载Jquery也是一个好主意,因为您似乎确实依赖$(document).ready函数。但是如果这不可能,你可以试试这个,或者任何其他加载程序,比如yepnope.js或者我最喜欢的requirejs


    您可以试试这个,它基本上是等待jquery加载,然后执行函数。如果可以的话,静态加载Jquery也是一个好主意,因为您似乎确实依赖$(document).ready函数。但是如果这不可能,你可以试试这个,或者任何其他加载程序,比如yepnope.js或者我最喜欢的requirejs


    您可以将onload事件添加到动态加载的脚本中,如下所示:

    function loa_j(){
     if (typeof jQuery === "undefined") {
         var newscript = document.createElement('script');
         newscript.type = 'text/javascript';
         newscript.async = true;
         newscript.src = 'http://code.jquery.com/jquery-latest.min.js';
         newscript.onload = jqReady;  //<-- executed only after jquery is loaded
         (document.getElementsByTagName('head')[0]||document.getElementsByTagName('body'[0]).appendChild(newscript);
      }
    }
    
    function jqReady(){
        // your jquery code here 
    }
    
    loa_j();
    
    函数loa_j(){
    if(jQuery的类型==“未定义”){
    var newscript=document.createElement('script');
    newscript.type='text/javascript';
    newscript.async=true;
    newscript.src=http://code.jquery.com/jquery-latest.min.js';
    
    newscript.onload=jqReady;//您可以按如下方式将onload事件添加到动态加载的脚本中:

    function loa_j(){
     if (typeof jQuery === "undefined") {
         var newscript = document.createElement('script');
         newscript.type = 'text/javascript';
         newscript.async = true;
         newscript.src = 'http://code.jquery.com/jquery-latest.min.js';
         newscript.onload = jqReady;  //<-- executed only after jquery is loaded
         (document.getElementsByTagName('head')[0]||document.getElementsByTagName('body'[0]).appendChild(newscript);
      }
    }
    
    function jqReady(){
        // your jquery code here 
    }
    
    loa_j();
    
    函数loa_j(){
    if(jQuery的类型==“未定义”){
    var newscript=document.createElement('script');
    newscript.type='text/javascript';
    newscript.async=true;
    newscript.src=http://code.jquery.com/jquery-latest.min.js';
    
    newscript.onload=jqReady;//已经在尝试
    ?不太清楚您的意思…我希望我的用户不必编辑太多html:)事件
    onload
    在html中使用作为指示符,显示完全加载的页面(带有样式、外部脚本、图像)。
    onload=“loa_j()
    表示加载页面后需要运行什么脚本
    loa_j()
    。已经在尝试
    ?不太清楚您的意思…我希望我的用户不必编辑太多html:)事件
    在html中使用作为指示符,以显示已完全加载的页面(使用样式、外部脚本、图像)。
    onload=“loa_j()
    表示加载页面后需要运行什么脚本。我会尝试……但我认为这不管用?我相信$(文档)。就绪取决于jQuery(这就是为什么在我的第一段代码中它不起作用的原因)。只要检查一下,朋友,我想它会工作的,因为函数调用应该在“ready()”尝试之后完成…不起作用。loa_j()是加载jQuery的东西。我不能在执行之前使用任何jQuery。但我认为在加载jQuery之后,它可以检查对吗?我会尝试…但我认为这不会起作用?我相信$(document).ready依赖于jQuery(这就是为什么在我的第一个代码段中它不起作用的原因)。朋友,只要检查一下它,我认为它会起作用,因为函数调用应该在“ready()”尝试它之后完成……不起作用。loa_j()是加载jQuery的东西。在执行jQuery之前,我不能使用任何jQuery。但是我认为在加载jQuery之后,它就可以检查了,对吗。。?