移动端性能优化动态加载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 技术的 ...
随机推荐
- http://www.cnblogs.com/meiCode/p/5896239.html
http://www.cnblogs.com/meiCode/p/5896239.html
- JS扩展方法——字符串trim()
转自:http://www.cnblogs.com/kissdodog/p/3386480.html <head> <title>测试JS扩展方法</title> ...
- Validator验证Ajax提交表单的方法
Validator验证Ajax提交表单的方法 转自:http://hunanpengdake.iteye.com/blog/1671360 当我们在一些稍微复杂的业务时,可能会遇到需要多个表单form ...
- BZOJ3692 : 愚蠢的算法
两个函数相同等价于不存在长度为$3$的下降子序列. 先考虑随意填的部分,设$f[i][j]$表示考虑了$[i,n]$,下降子序列第$2$项的最小值的是这里面第$j$个的方案数,转移则考虑往序列里插数字 ...
- NOIp 2014 #3 寻找道路 Label:图论
题目描述 在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1 .路径上的所有点的出边所指向的点都直接或间接与终点连通. 2 .在满足条 ...
- [题解+总结]NOIP动态规划大合集
1.前言 NOIP2003-2014动态规划题目大合集,有简单的也有难的(对于我这种动态规划盲当然存在难的),今天就把这些东西归纳一下,做一个比较全面的总结,方便对动态规划有一个更深的理解. 2.NO ...
- require.js 入门学习 (share)
以下内容转自阮一峰老师的网络日志:http://www.ruanyifeng.com/blog/2012/11/require_js.html 更多学习资源: require.js官网:http:// ...
- 【BZOJ】2086: [Poi2010]Blocks
题意 \(n(1 \le n \le 1000000)\)个数\(a_i(a_i \le 10^9)\).\(m(1 \le m \le 50)\)次询问,每次给出一个\(k(k \le 10^9)\ ...
- 【HDU】1847 Good Luck in CET-4 Everybody!
http://acm.hdu.edu.cn/showproblem.php?pid=1847 题意:同nim..不过只有一堆..每次取2的幂次..即1.2.4....等,n<=1000 #inc ...
- Java_Java Compiler 应用实例
转自:http://hejiangtao.iteye.com/blog/1399122 一直在用JDK1.5, 一直搞不清楚JDK1.6有啥特性, 就翻了翻, 发现这个Compiler API(JSR ...