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('我是按顺序加载啦');
    });
    

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

  • 相关阅读:
    linux下vim命令详解
    Linux 指令篇:档案目录管理chown
    分级渲染百度地图路段红黄绿功能
    矢量数据的属性值的添加、编辑、删除
    Extjs+C# 文件上传
    IBATIS 的动态SQL语句拼接
    一个DIV位于另一个div的右下角
    ArcGIS JavaScript API 添加点
    将Excel数据导入至SqlServer中
    Extjs 图表控件,可修改X轴与Y轴坐标
  • 原文地址:https://www.cnblogs.com/kingwell/p/3033551.html
Copyright © 2011-2022 走看看