Possible to defer loading of jQuery?

前端 未结 16 1130
孤街浪徒
孤街浪徒 2020-11-28 19:26

Let\'s face it, jQuery/jQuery-ui is a heavy download.

Google recommends deferred loading of JavaScript to speed up initial rendering. My page uses jQuery to set up s

16条回答
  •  借酒劲吻你
    2020-11-28 19:59

    Here's my version which supports chaining to be sure the scripts are loaded one after each other, based on ampersand's code:

    var deferredJSFiles = ['jquery/jquery', 'file1', 'file2', 'file3'];
    function downloadJSAtOnload() {
        if (!deferredJSFiles.length)
            return;
        var deferredJSFile = deferredJSFiles.shift();
        var element = document.createElement('script');
        element.src = deferredJSFile.indexOf('http') == 0 ? deferredJSFile : '/js/' + deferredJSFile + '.js';
        element.onload = element.onreadystatechange = function() {
            if (!this.readyState || this.readyState == 'loaded' || this.readyState == 'complete')
                downloadJSAtOnload();
        };
        document.body.appendChild(element);
    }
    if (window.addEventListener)
        window.addEventListener('load', downloadJSAtOnload, false);
    else if (window.attachEvent)
        window.attachEvent('onload', downloadJSAtOnload);
    else
        window.onload = downloadJSAtOnload;
    

提交回复
热议问题