zoukankan      html  css  js  c++  java
  • 移动端性能优化动态加载JS、CSS

    JS CODE

     (function() {
        /**
         * update:
         * 1.0
         */
        var version = "insure 1.1.0";
        var Zepto = Zepto || null, jQuery = jQuery || null, $ = Zepto || jQuery;
        var showLoading = false,
            isUsePackMode = false; // 是否使用合并模式,true则加载分页面合并的JS,CSS
        
        if (window.location.hostname == 'localhost') {
            isUsePackMode = false; //本地开发环境默认值为false
        }
        
        /**
         * 页面初始化, 动态加载
         */
        var location = window.location;
        // 协议
        var protocol = location.protocol;
        // 主机名
        var host = location.host;
        
        if (host.indexOf('pingan.com') != -1) {
            isUsePackMode = true;
        }
        // 加载一个脚本文件
        function _loadJsFile(url, callback) {
            var script = document.createElement("script");
            if(script.readyState) {
                script.onreadystatechange = function() {
                    if(script.readyState == "loaded" || script.readyState == "complete") {
                        callback.call();
                    }
                }
            } else {
                script.onload = callback;
            }
            script.type = "text/javascript";
            //script.async = true;
            script.src = url;
            //url.indexOf('?') != -1 ? url + '&v=' + version : url + '?v=' + version;
            document.getElementsByTagName("head")[0].appendChild(script);
        }
    
        // 加载脚本文件列表
        function _loadJsList(urls, statechange, _index) {
            var index = _index || 0;
            if(urls[index]) {
                _loadJsFile(urls[index], function() {
                    _loadJsList(urls, statechange, index + 1);
                });
            }
    
            if(statechange) {
                statechange(index);
            }
        }
    
        // 根据域名解析文件url
        function _parse(urls, type) {
            var _urls = [], url = "";
    
            if( typeof urls == "string") {
                urls = [urls];
            }
    
            for(var i = 0, len = urls.length; i < len; i++) {
                url = urls[i];
                if(!url) {
                    continue;
                } else if(/^(http|https)/.test(url)) {// 完整的URL
                    _urls.push(url);
                } else if(/^//.test(url)) {// 以根目录为路径
                    _urls.push(protocol + "//" + host + url);
                } else {
                    _urls.push(url+'?_='+Math.random());
                }
            }
    
            return _urls;
        }
    
        // 加载一个css文件
        function loadCSS(urls, packCss) {
            var html = [];
            urls = _parse(urls, "css");
            if (isUsePackMode && packCss) {
                urls = _parse(packCss, "css");
            }
            for(var i = 0, len = urls.length; i < len; i++) {
                html.push("<link type="text/css" rel="stylesheet" href="" + urls[i] + "" />");
            }
            document.write(html.join(""));
        }
    
        // 加载脚本文件
        function loadJs(urls, callback, dontevent, showLoad, packJs) {
            showLoading = showLoad;
            urls = _parse(urls, "js");
            if(typeof(_) != 'function' && typeof(jQuery) != 'function') {        
                urls.unshift(window.getDiffFrameUrl());
            }
            if (isUsePackMode && packJs) {
                packJs.unshift(window.getDiffFrameUrl());
                urls = _parse(packJs, "js");
            }
            if(!dontevent) {
                var _callback = callback, len = urls.length;
                callback = function(index) {
                    if(_callback) {
                        _callback(index);
                    }
                }
            }
            _loadJsList(urls, callback);
        }
    
        window.loadCSS = loadCSS;
        window.loadJs = loadJs;
        window.getDiffFrameUrl = function(prefix) {
            var b = navigator.userAgent.toLowerCase();
            browser = {
                safari : /webkit/.test(b),
                opera : /opera/.test(b),
                msie : /msie/.test(b) && !/opera/.test(b),
                mozilla : /mozilla/.test(b) && !/compatible/.test(b),
                winphone : window.navigator.msPointerEnabled
            };
            var prefix = prefix || '';
            //var url = prefix+'js/third-party/zepto.v1.1.3.min.js';
            var url = prefix+'/ebusiness/car/mobile/quoter/js/third-party/zepto.v1.1.3.js';
            if(browser.msie || browser.winphone) {
                url = prefix+'/ebusiness/car/mobile/quoter/js/third-party/jquery-1.9.1.min2.js';
            }
            return url;
        }
        
    })();

    调用方法

    <script type="text/javascript">
    $(function(){
        loadJs(['/ebusiness/car/mobile/quoter/js/common/common.js',
        '/ebusiness/car/mobile/quoter/js/common/city.js',
        '/ebusiness/car/mobile/quoter/js/common/date.js',
        '/ebusiness/car/mobile/quoter/js/insure/insureValidate.js',
        '/ebusiness/car/mobile/quoter/js/insure/insureBaseInfo.js'
        ],null,true,false);
    });
    </script>
  • 相关阅读:
    POJ 1953 World Cup Noise
    POJ 1995 Raising Modulo Numbers (快速幂取余)
    poj 1256 Anagram
    POJ 1218 THE DRUNK JAILER
    POJ 1316 Self Numbers
    POJ 1663 Number Steps
    POJ 1664 放苹果
    如何查看DIV被设置什么CSS样式
    独行DIV自适应宽度布局CSS实例与扩大应用范围
    python 从入门到精通教程一:[1]Hello,world!
  • 原文地址:https://www.cnblogs.com/iicoo/p/5055169.html
Copyright © 2011-2022 走看看