移动端性能优化动态加载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 技术的 ...
随机推荐
- java中 == 与 equal 的区别
http://www.cnblogs.com/shenliang123/archive/2012/04/16/2452156.html String str1 = new String("s ...
- Hangover[POJ1003]
Hangover Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 121079 Accepted: 59223 Descr ...
- HttpLuaModule 获取Get和Post参数
Get方式: local id = tostring(ngx.var.arg_id) local type = tostring(ngx.var.arg_type) Post方式: ngx.req.r ...
- [BZOJ2791][Poi2012]Rendezvous
2791: [Poi2012]Rendezvous Time Limit: 25 Sec Memory Limit: 128 MBSubmit: 95 Solved: 71[Submit][Sta ...
- JS:操作样式表3:内联和外链样式
var box = document.getElementById("box"); box.style.属性;只能读取修改行内样式. //访问元素样式2,对外链样式表进行操作 do ...
- HDU 1700 Points on Cycle(向量旋转)
题目链接 水题,卡了下下精度. #include <cstdio> #include <iostream> #include <cmath> using names ...
- 崩溃恢复(crash recovery)与 AUTORESTART参数
关于这个参数设置的影响,在生产系统中经历过两次: 第一次是有套不太重要的系统安装在虚拟机,这套系统所有应用(DB2 WAS IHS)都配置到/etc/rc.local中,每次启动机器会自 ...
- 使用cjson进行对象的嵌套封装
共分两个部分,1)创建json.2)解析json 1)创建嵌套json的代码 char * makeJson() { cJSON * pRoot = NULL; cJSON * pSub_1 = NU ...
- js 遮罩层 loading 效果
//调用方法 //关闭事件<button onclick='LayerHide()'>关闭</button>,在loadDiv(text)中,剔除出来 //调用LayerSho ...
- Struts 2入门案例及登录
一:入门案例 步骤如下: 1.导入jar包 2.配置web.xml文件 3.在src下创建名称为struts.xml的配置文件 4.创建编写HelloWorldAction 5.创建index.jsp ...