同步加载JS

/**
 * jsLoader 同步加载JS,并执行回调
 * @param {type} url JS的url
 * @param {type} callback 加载后的回调
 * @param {type} objName 可选,如果对象存在,则不重新加载JS
 * @param {type} force 可选,objName 对象存在时,是否强制重新加载
 * @returns {Boolean}
 */
jsLoader = function(url, callback, objName, force) {
    force = force || false;
    // 执行回调
    var _run = function() {
        if (callback && typeof callback == 'function') {
            callback();
        } else if (callback) {
            eval(callback);
        }
    };
    // 加载JS
    var _loader = function() {
        var header = document.getElementsByTagName('head')[0],
                js = document.createElement('script');
        js.setAttribute('type', 'text/javascript');
        js.setAttribute('charset', 'utf-8');
        js.setAttribute('src', url + '?' + Math.random());
        js.onload = js.onreadystatechange = function() {
            if (js.onreadystatechange && js.readystate && (js.readystate !== 'complete' || js.readystate !== 'loaded')) {
                return false;
            }
            _run();
        };
        header.appendChild(js);
    };
    // main
    if (typeof objName !== 'undefined' && force == false) {
        _run();
    } else {
        _loader();
    }
    return true;
};

jsLoader('http://dzqun.gtimg.cn/plaza/scripts/plugin/jquery.QP.js', function() {
    jQuery.QP.msgbox('123');
});

你可能感兴趣的:(同步加载JS)