zoukankan      html  css  js  c++  java
  • 异步加载javascript

    //一、模型

    function loadScript(url) {
    if (url && url.length > 0) {
    var script;
    for (var i = 0; i < url.length; i++) {
    var l_url = url[i];
    script = document.createElement("script");
    script.type = "text/javascript";
    if (script.readyState) {//ie
    script.onreadystatechange = function() {
    if (script.readyState == "loaded" || script.readyState == "complete") {
    script.onreadystatechange = "null";
    if (l_url.callback) { l_url.callback(); }
    }
    }
    }
    else {//其他浏览器
    script.onload = function() {
    if (l_url.callback) { l_url.callback(); }
    }
    }
    script.src = l_url.src;
    document.getElementsByTagName("head")[0].appendChild(script);
    }
    }
    }

    //二、实战

    /*用法:
    LoadJS.URL = [{ src: '<%=Page.ResolveUrl("~/Scripts/My97DatePicker/WdatePicker.js") %>' },
    { src: '<%=Page.ResolveUrl("~/Web/srv/srvscript.aspx") %>' },
    { src: '<%=Page.ResolveUrl("~/Scripts/wsdat.wsjsondat?defid=db_dveda.v_data_dict&fmtid=json&strparam={}&dStyle=jsonfile&callback=g_dict") %>' },
    { src: '<%=Page.ResolveUrl("~/Scripts/jquery-1.8.3.js") %>' },
    { src: '<%=Page.ResolveUrl("~/Scripts/jquery.cookie.js") %>' },
    { src: '<%=Page.ResolveUrl("~/Scripts/jquery.easydrag.handler.beta2.js") %>' },
    { src: '<%=Page.ResolveUrl("~/Scripts/powerFloat/js/jquery-powerFloat.js") %>' },
    { src: '<%=Page.ResolveUrl("~/Scripts/jquery-ui-1.9.2.custom.js") %>' },
    { src: '<%=Page.ResolveUrl("~/Scripts/dynatree/jquery.dynatree.js") %>' },
    { src: '<%=Page.ResolveUrl("~/Scripts/ws.data.srv.js") %>' },
    { src: '<%=Page.ResolveUrl("~/Scripts/admin.js") %>' },
    { src: '<%=Page.ResolveUrl("~/Scripts/pagebase.js") %>' },
    { src: '<%=Page.ResolveUrl("~/Scripts/ember/handlebars-1.0.0.beta.6.js") %>' },
    { src: '<%=Page.ResolveUrl("~/Scripts/ember/ember-1.0.0-pre.2.min.js") %>' },
    { src: '<%=Page.ResolveUrl("~/Scripts/ember/ws.ember.base.js") %>' }
    ];
    LoadJS.addjs({ src: 'http://www.cnblogs.com/Scripts/basemanage/articlemanage.js' });
    LoadJS.load();
    */
    //url[{src:'',callback:function(){}}]
    var LoadJS = {
    URL: [],
    addjs: function(url) {
    var me = this;
    me.URL.push(url);
    console.info(me.URL);
    },
    load: function() {
    var me = this;
    var url = me.URL;
    if (url && url.length > 0) {
    for (var i = 0; i < url.length; i++) {
    if ((i + 1) < url.length) {
    url[i].next_url = url[i + 1];
    }
    }
    me.loadScript(url[0]);
    }
    },
    //{src:'',callback:function(){},next_url:{}}
    loadScript: function(url) {
    var me = this;
    var l_url = url;
    var script = document.createElement("script");
    script.type = "text/javascript";
    if (script.readyState) {//ie
    script.onreadystatechange = function() {
    if (script.readyState == "loaded" || script.readyState == "complete") {
    script.onreadystatechange = "null";
    if (l_url.callback) { l_url.callback(); }
    if (l_url.next_url) { me.loadScript(l_url.next_url); }
    }
    }
    }
    else {//其他浏览器
    script.onload = function() {
    if (l_url.callback) { l_url.callback(); }
    if (l_url.next_url) { me.loadScript(l_url.next_url); }
    }
    }
    script.src = l_url.src;
    document.getElementsByTagName("head")[0].appendChild(script);
    }

    }

  • 相关阅读:
    给刚工作不久的程序猿同学的一封信
    Java进阶篇设计模式之六 ----- 组合模式和过滤器模式
    Java进阶篇设计模式之五-----外观模式和装饰器模式
    Java进阶篇设计模式之四 -----适配器模式和桥接模式
    Java进阶篇设计模式之三 ----- 建造者模式和原型模式
    SpringBoot简单打包部署(附工程)
    SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)【转载】
    Eclipse快捷键大全(转载)
    在redis一致性hash(shard)中使用lua脚本的坑
    如何评价微软Connect 2015?[转载]
  • 原文地址:https://www.cnblogs.com/kuailewangzi1212/p/3079666.html
Copyright © 2011-2022 走看看