移动端性能优化动态加载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') != -) {
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")[].appendChild(script);
} // 加载脚本文件列表
function _loadJsList(urls, statechange, _index) {
var index = _index || ;
if(urls[index]) {
_loadJsFile(urls[index], function() {
_loadJsList(urls, statechange, index + );
});
} if(statechange) {
statechange(index);
}
} // 根据域名解析文件url
function _parse(urls, type) {
var _urls = [], url = ""; if( typeof urls == "string") {
urls = [urls];
} for(var i = , 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 = , 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>
移动端性能优化动态加载JS、CSS的更多相关文章
- 页面加载异常 清除浏览器静态文件 js css 缓存 js动态加载js css文件,可以配置文件后辍,防止浏览器缓存
js清除浏览器缓存的几种方法 - 兔老霸夏 - 博客园 https://www.cnblogs.com/Mr-Rocker/p/6031096.html js清除浏览器缓存的几种方法 一.CSS和 ...
- 动态加载js css 插件
简介 动态加载js,css在现在以及将来肯定是很重要的.目前来看前端代码编写的业务量已经远远超过后端编写的.随着对用户体验度逐渐增强,前端业务复杂,加载速度变得很慢很慢.为了解决这个问题,目前出现的两 ...
- js动态加载js css文件,可以配置文件后辍,防止浏览器缓存
js的引用,在浏览器,或微信上访问经常会遇到文件改了,但就是没有更新的问题,使用此函数可以轻松解决缓存问题只需要把js的引用方式改为使用此函数加载即可 源码如下: /** * js动态加载js css ...
- 动态加载js,css
今天项目中需要用到动态加载 CSS 文件,经过一番折腾终于搞定,回家整理了一下,顺便融合了动态加载 JS 的功能写成了一个对象,先上代码: var dynamicLoading = { css: fu ...
- JS动态加载 js css
1.动态加载js function loadScript( url ){ var script = document.createElement( "script" ); scri ...
- 动态加载js,css(项目中需要的)
最近做的一个项目需要加入百度统计,大家都知道百度统计在页面引用就是一坨js,实现方法很简单引用到页面就ok了. 那么问题来了,虽然我不知道百度统计的原理是啥,我的测试服引用了百度统计,百度统计账号里面 ...
- jquery动态加载js/css文件方法
先来看jquery自带的getSrcript文件 方法 代码如下 复制代码 $.getScript(url,callback) 实例 代码如下 复制代码 var testVar = 'New JS l ...
- js动态加载js文件(js异步加载之性能优化篇)
1.[基本优化] 将所有需要的<script>标签都放在</body>之前,确保脚本执行之前完成页面渲染而不会造成页面堵塞问题,这个大家都懂. 2.[合并JS代码,尽可能少的使 ...
- 【转】js JavaScript 的性能优化:加载和执行
JavaScript 的性能优化:加载和执行 转自:https://www.ibm.com/developerworks/cn/web/1308_caiys_jsload/ 随着 Web2.0 技术的 ...
随机推荐
- Python profiling
Profiling(性能调试)是我一直很感兴趣的一个话题,之前给大家介绍过Datadog这个工具,今天我们来看看Python语言中有哪些方法来做Profiling. Poorman's Profile ...
- sring mvc 返回值至jsp界面的几种方式
Spring 通过Controller 向 View 传值的方法有以下四种 HttpServletRequest ModelAndView Map<String, Object> map ...
- MapReduce 作业调试
1. 最经典的方法通过打印语句来调试程序 System.err.println("Bad Data"+value.toString()); 这些输出错误都会记录到一个标准错误中,可 ...
- fragment中嵌入viewpager的问题
今天终于解决了这个问题 原来问题是出现于viewpager在这里的layout_height不能设置为"wrap_content" 之前我遇到空白的问题,我还以为是管理的问题 所以 ...
- BZOJ1950 : [Ceoi2006]Link
显然在最优解中,添加的边都是从$1$出发的. 这个图是一个环套树的结构,对于树的部分,显然叶子节点必须加边. 因此可以自底向上确定树中哪些节点需要加边,同时得到$1$到环上每个点的距离. 对于每个环, ...
- jenkins 的 ProcessTreeKiller----无法启动子进程的解决办法
参考: http://alanland.iteye.com/blog/2047244 http://scmbob.org/start-process-in-jenkins.html java -Dhu ...
- gulp-nodemon 和 gulp-livereload 配置
一.gulp 安装 1. 全局安装: npm install -g gulp 2. 安装在项目开发环境: npm install gulp --save-dev 二.gulp-nodemon 和 gu ...
- hdu 1097 A hard puzzle
Problem Description lcy gives a hard puzzle to feng5166,lwg,JGShining and Ignatius: gave a and b,how ...
- NOIp 2013 #2 花匠 Label:爆0的Water
题目描述 花匠栋栋种了一排花,每株花都有自己的高度.花儿越长越大,也越来越挤.栋栋决定 把这排中的一部分花移走,将剩下的留在原地,使得剩下的花能有空间长大,同时,栋栋希 望剩下的花排列得比较别致. 具 ...
- 洛谷 P1414 又是毕业季II Label:None
题目背景 “叮铃铃铃”,随着高考最后一科结考铃声的敲响,三年青春时光顿时凝固于此刻.毕业的欣喜怎敌那离别的不舍,憧憬着未来仍毋忘逝去的歌.1000多个日夜的欢笑和泪水,全凝聚在毕业晚会上,相信,这一定 ...