动态加载 javascript 文件,完成后执行回调

发表于 2016-11-23 17:05:04   |   下载附件   |   字体:
动态加载JS文件addscript动态插入 javascript 文件加载JSjs加载
/*
 * 用途:动态加载 javascript 文件
 * @param {string} [url]
 * @param {string} [scriptID]
 * @param {string} [callback] 回调函数
 * @param {string} [wrapperID] 插入到指定位置
 */
addScript = function(url, scriptID, callback, wrapperID) {

    // 定义变量
    var head = document.getElementsByTagName('head')[0];
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.id = scriptID ? scriptID : "";

    // 绑定回调事件
    var supportOnload = "onload" in script;
    if (supportOnload) {
        script.onload = function() {
            if (callback) {
                callback();
            }
        };
        script.onerror = function() {
            alert( "javascript loading error : " + url );
        }
    } else {
        script.onreadystatechange = function() {
            if (/loaded|complete/.test(script.readyState) && callback) {
                callback();
            }
        }
    }

    // 插入 script
    script.src = url + (url.indexOf('?') < 0 ? '?' : '&') + 'rand=' + Math.floor(Math.random() * 1000);
    if (wrapperID) {
        document.getElementById(wrapperID).appendChild(script);
    } else {
        head.appendChild(script);
    }

};