zoukankan      html  css  js  c++  java
  • 动态加载Javascript增强版本

    我们经常使用动态加载Javascript,写个函数很容易现实,之前也写过一个函数,不过当加载多个JS时,只能根据浏览器返回的顺序来先后加载,这肯定不是我们想要的,现在使用了一下技巧,当加载多个JS时,能按照我们的顺序加载:

    /*
        Name:动态加载JS
        Author:kingwell Leng
        Date : 2013/4/21
        E-mail: jinhua.leng##gmail.com
    
    */
    function getScript(obj, callback) {
        var arr = obj,
        timeout,
        str = typeof obj === 'string';
        function add() {
            var script = document.createElement("script");
                header = document.getElementsByTagName("head")[0];
            script.src = str ? obj : arr[0];
            script.type = "text/javascript";
            if (str) {
                if (script.readyState) {
                    script.onreadystatechange = function () {
                        if (script.readyState === 'loaded' || script.readyState === 'complete') {
                            script.onreadystatechange = null;
                            callback && callback();
                        }
                    };
                } else {
                    script.onload = function () {
                        callback && callback();
                    };
                }
            } else {
                if (arr.length >= 1) {
                    if (script.readyState) {
                        script.onreadystatechange = function () {
                            if (script.readyState === 'loaded' || script.readyState === 'complete') {
                                script.onreadystatechange = null;
                                arr.shift();
                                timeout = setTimeout(add, 1);
                            }
                        };
                    } else {
                        script.onload = function () {
                            arr.shift();
                            timeout = setTimeout(add, 1);
                        };
                    }
                } else {
                    clearTimeout(timeout);
                    callback && callback();
                }
            }
            header.appendChild(script);
        }
        add();
    }

    调用:

    getScript(['http://code.jquery.com/jquery-1.9.1.min.js','js1.js', 'js2.js', 'js3.js', 'js4.js'], function () {
    	alert('我是按顺序加载啦');
    });
    

     现在是按照我们写代码的顺序加载啦...

  • 相关阅读:
    【?】Hello。。。
    【Calc】对于‘精分’的研究
    [AFO]记五年oi生涯及CSP2019复赛游记
    CF#579div.3
    「BZOJ1827」奶牛大集会
    「BZOJ2821」作诗 && 「BZOJ2724」蒲公英
    「BZOJ4576」262144
    「Bzoj5055」膜法师
    「51nod1689」逛街
    「51nod1681」公共祖先 &&「51nod2553」双重祖先
  • 原文地址:https://www.cnblogs.com/kingwell/p/3033551.html
Copyright © 2011-2022 走看看