代码之家  ›  专栏  ›  技术社区  ›  ui-unicorn.co.uk

延迟加载javascript以了解google页面

  •  0
  • ui-unicorn.co.uk  · 技术社区  · 7 年前

    我有一个延迟加载javascript的代码,我想知道代码是否会按顺序加载脚本( JQuery.min 首先)根据它们在代码中的位置?

    function downloadJSAtOnload() {
    
    
    var element01 = document.createElement("script");
    element01.src = "js/jquery.min.js";
    document.body.appendChild(element01);
    
    var element02 = document.createElement("script");
    element02.src = "js/plugins.js";
    document.body.appendChild(element02);
    
    var element03 = document.createElement("script");
    element03.src = "js/scripts.js";
    document.body.appendChild(element03);
    
    
    var element04 = document.createElement("script");
    element04.src = "js/SmoothScroll.min.js";
    document.body.appendChild(element04);
    
    var element05 = document.createElement("script");
    element05.src = "js/contact-form.js";
    document.body.appendChild(element05);
    
    }
    
    if (window.addEventListener)
    window.addEventListener("load", downloadJSAtOnload, false);
    else if (window.attachEvent)
    window.attachEvent("onload", downloadJSAtOnload);
    else window.onload = downloadJSAtOnload;
    

    如果无法加载 JQuery.min 我也在猜测,例如 contact-form.js Uncaught ReferenceError: $ is not defined 我猜是因为JQuery。min还没有完成下载,你怎么解决这个问题?我猜是一个侦听器/如果加载完毕,其他人等待。。。 提前感谢

    2 回复  |  直到 7 年前
        1
  •  1
  •   CumminUp07    7 年前

    在此处找到 Load jQuery with JavaScript using Promises

    function loadScript(url) {
        return new Promise(function(resolve  reject) {
            var script = document.createElement("script");
            script.onload = resolve;
            script.onerror = reject;
            script.src = url;
            document.getElementsByTagName("head")[0].appendChild(script);
        });
    }
    
    function loadjQuery() {
        if (window.jQuery) {
            // already loaded and ready to go
            return Promise.resolve();
        } else {
            return loadScript('https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js');
        }
    }
    
    
    // Usage:
    loadjQuery().then(function() {
        // code here that uses jQuery
    }, function() {
        // error loading jQuery
    });
    
        2
  •  1
  •   Jarek Kulikowski    7 年前

    这很快,但我认为应该有效。

    function downloadJSAtOnload() {
        var element01 = document.createElement("script");
        element01.src = "js/jquery.min.js";
        document.body.appendChild(element01);
    
        element01.onload = function() {
            var element02 = document.createElement("script");
            element02.src = "js/plugins.js";
            document.body.appendChild(element02);
    
            var element03 = document.createElement("script");
            element03.src = "js/scripts.js";
            document.body.appendChild(element03);
    
    
            var element04 = document.createElement("script");
            element04.src = "js/SmoothScroll.min.js";
            document.body.appendChild(element04);
    
            var element05 = document.createElement("script");
            element05.src = "js/contact-form.js";
            document.body.appendChild(element05);
        }
    }