Dynamically load JS inside JS

This question already has an answer here:

  • How do I include a JavaScript file in another JavaScript file? 50 answers

  • jQuery's $.getScript() is buggy sometimes, so I use my own implementation of it like:

    jQuery.loadScript = function (url, callback) {
        jQuery.ajax({
            url: url,
            dataType: 'script',
            success: callback,
            async: true
        });
    }
    

    and use it like:

    if (typeof someObject == 'undefined') $.loadScript('url_to_someScript.js', function(){
        //Stuff to do after someScript has loaded
    });
    

    My guess is that in your DOM-only solution you did something like:

    var script = document.createElement('script');
    script.src = something;
    //do stuff with the script
    

    First of all, that won't work because the script is not added to the document tree, so it won't be loaded. Furthermore, even when you do, execution of javascript continues while the other script is loading, so its content will not be available to you until that script is fully loaded.

    You can listen to the script's load event, and do things with the results as you would. So:

    var script = document.createElement('script');
    script.onload = function () {
        //do stuff with the script
    };
    script.src = something;
    
    document.head.appendChild(script); //or something of the likes
    

    I need to do this frequently, so I use this:

    var loadJS = function(url, implementationCode, location){
        //url is URL of external file, implementationCode is the code
        //to be called from the file, location is the location to 
        //insert the <script> element
    
        var scriptTag = document.createElement('script');
        scriptTag.src = url;
    
        scriptTag.onload = implementationCode;
        scriptTag.onreadystatechange = implementationCode;
    
        location.appendChild(scriptTag);
    };
    var yourCodeToBeCalled = function(){
    //your code goes here
    }
    loadJS('yourcode.js', yourCodeToBeCalled, document.body);
    

    For more information, see this site How do I include a JavaScript file in another JavaScript file?, which is the source of my function idea.

    链接地址: http://www.djcxy.com/p/7328.html

    上一篇: 在.js文件中包含.js文件

    下一篇: 动态加载JS内部的JS