移动端性能优化动态加载JS、CSS
2015-12-17 20:08
483 查看
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>
相关文章推荐
- iOS语音识别封装
- 冒泡排序的两个例子(objective-c)
- cocos2dx
- 修改小程序
- OSChina App代码分析二
- Android5.0以后版本把应用移动到SD或者TF卡的方法
- Android Studio 好用的插件,这些基本是测试过好用的,或者我想用的~
- 微信JSSDK开发
- Objective-c语言_练习题3
- iOS分类的那些坑
- Android Bitmap OutOfMemory 解决的方法
- Android的图片压缩类ThumbnailUtils
- Android-->RxJava/RxAndroid 入门初体验
- Android进阶:PopupWindow详解
- ios8调用相机报警告: Snapshotting a view that has not been rendered results in an empty snapshot. Ensure yo
- iOS 打包
- android_rpg 天龙群侠传
- Objective-C中的内存管理
- 绘图 - 8
- iOS button总结