Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果使用其他脚本';装货顺序未知?_Javascript_Jquery_Ajax_Concurrency_Callback - Fatal编程技术网

Javascript 如果使用其他脚本';装货顺序未知?

Javascript 如果使用其他脚本';装货顺序未知?,javascript,jquery,ajax,concurrency,callback,Javascript,Jquery,Ajax,Concurrency,Callback,我希望在我不控制的页面(电子商务平台)中异步包含特定版本的jQuery,并且只在脚本中使用它。页面可能会加载其他脚本,这些脚本也可能希望执行相同的操作,我不知道页面包含我的脚本与其他脚本的顺序 使用jQuery.noConflict([removeAll]),我可以确保: 我的脚本获得了正确的jQuery版本 我不会为其他人覆盖jQuery版本吗 我认为这个问题不同于大多数其他多jQuery版本的问题,因为人们对脚本包含顺序进行假设,而不使用异步jQuery加载和回调 谢谢 以下是我的尝试(有人

我希望在我不控制的页面(电子商务平台)中异步包含特定版本的jQuery,并且只在脚本中使用它。页面可能会加载其他脚本,这些脚本也可能希望执行相同的操作,我不知道页面包含我的脚本与其他脚本的顺序

使用
jQuery.noConflict([removeAll])
,我可以确保:

  • 我的脚本获得了正确的jQuery版本
  • 我不会为其他人覆盖jQuery版本吗
  • 我认为这个问题不同于大多数其他多jQuery版本的问题,因为人们对脚本包含顺序进行假设,而不使用异步jQuery加载和回调

    谢谢

    以下是我的尝试(有人能确认一下吗?)

    myscript.js

    (function() {
    
      var myJQuery;
    
      function loadjQuery(url, callback) {
        var runCallbackOnSuccess = function() {
          if (typeof jQuery != "undefined") {
            myJQuery = jQuery.noConflict(true);   // NOTICE THIS LINE
            callback();
          }
        };
        var scriptTag = document.createElement("script");
        scriptTag.setAttribute("src", url);
        scriptTag.onload = runCallbackOnSuccess; 
        document.getElementsByTagName("head")[0].appendChild(scriptTag);
      }
    
      function doSomethingInMyScript() {
        myJQuery(document).ready(....);
      }
    
      loadjQuery("https://code.jquery.com/jquery-A.B.C.min.js", doSomethingInMyScript);
    })();
    
    otherscript.js(我无法控制,但假设是这样)

    (函数(){
    函数loadjQuery(url,回调){
    }
    函数doSomethingInOtherScript(){
    jQuery(document).ready(…);
    }
    loadjQuery(“https://code.jquery.com/jquery-X.Y.Z.min.js“,doSomethingInOtherScript);
    })();
    
    无论以下情况如何,此代码是否有效:

  • 页面是否首先包含myscript.js或otherscript.js
  • 是否先执行myscript.js或otherscript.js的回调函数

  • 我认为只要在每个jQuery加载后立即执行回调函数就可以了,而另一个脚本中的代码不可能在jQuery加载和回调执行之间交错?谢谢,添加了括号。我以前试过一次,并被告知将我的想法作为答案发布。:)
    (function() {
      function loadjQuery(url, callback) {
        <same as above, but without the noConflict() call>
      }
    
      function doSomethingInOtherScript() {
        jQuery(document).ready(....);
      }
    
      loadjQuery("https://code.jquery.com/jquery-X.Y.Z.min.js", doSomethingInOtherScript);
    })();