动态加载js、css的实例代码


Posted in Javascript onMay 26, 2016

一、原生js:

/**
* 加载js和css文件
* @param jsonData.path 前缀路径
* @param jsonData.url 需要加载的js路径或css路径
* @param jsonData.type 需要加载的类型 js或css
*/
function loadWriteFiles(jsonData)
{
jsonData.path = jsonData.path != undefined ? jsonData.path : "";
if(jsonData.type == "js")
{
document.writeln("<script type='text/javascript' src='"+ jsonData.path + jsonData.url+"'></script>");
}
else if(jsonData.type == "css")
{
document.writeln("<link rel='stylesheet' href='"+jsonData.path + jsonData.url+"' type='text/css' />");
}
}
/**
* 加载js或css到head中
* @param jsonData.path 前缀路径
* @param jsonData.url 需要加载的js路径或css路径
* @param jsonData.type 需要加载的类型 js或css
*/
function loadFilesToHead(jsonData)
{
jsonData.path = jsonData.path != undefined ? jsonData.path : "";
if(jsonData.type == "js")
{
var _js = document.createElement("script");
_js.setAttribute("type", "text/javascript");
_js.setAttribute("src", jsonData.path + jsonData.url);
_js.onload = _js.onreadystatechange=function(){ 
if(!this.readyState||this.readyState=='loaded'||this.readyState=='complete'){ 
if("function" == typeof(jsonData["callback"]) && jsonData["callback"]){
jsonData["callback"].call(this);
}
} 
_js.onload=_js.onreadystatechange=null; 
} 
document.getElementsByTagName("head")[].appendChild(_js);//追加到head标签内
}
else if(jsonData.type == "css")
{
var _css = document.createElement("link");
_js.setAttribute("type", "text/css");
_css.setAttribute("rel", "stylesheet");
_css.setAttribute("href", jsonData.path + jsonData.url);
document.getElementsByTagName("head")[].appendChild(_css);//追加到head标签内
}
}

二、jquery版本:

采用deferred对象返回结果

var uiLoad = uiLoad || {};
(function($, $document, uiLoad) {
"use strict";
var loaded = [],
promise = false,
deferred = $.Deferred();
uiLoad.load = function (srcs) {
srcs = $.isArray(srcs) ? srcs : srcs.split(/\s+/);
if(!promise){
promise = deferred.promise();
}
$.each(srcs, function(index, src) {
promise = promise.then( function(){
return src.indexOf('.css') >= ? loadCSS(src) : loadScript(src);
} );
});
deferred.resolve();
return promise;
};
var loadScript = function (src) {
if(loaded[src]) return loaded[src].promise();
var deferred = $.Deferred();
var script = $document.createElement('script');
script.src = src;
script.onload = function (e) {
deferred.resolve(e);
};
script.onerror = function (e) {
deferred.reject(e);
};
$document.body.appendChild(script);
loaded[src] = deferred;
return deferred.promise();
};
var loadCSS = function (href) {
if(loaded[href]) return loaded[href].promise();
var deferred = $.Deferred();
var style = $document.createElement('link');
style.rel = 'stylesheet';
style.type = 'text/css';
style.href = href;
style.onload = function (e) {
deferred.resolve(e);
};
style.onerror = function (e) {
deferred.reject(e);
};
$document.head.appendChild(style);
loaded[href] = deferred;
return deferred.promise();
}
})(jQuery, document, uiLoad);

以上所述是小编给大家介绍的动态加载js、css的实例代码,希望对大家有所帮助!

Javascript 相关文章推荐
javascript 实现字符串反转的三种方法
Nov 23 Javascript
innerHTML,outerHTML,innerText,outerText的用法及区别解析
Dec 16 Javascript
jQuery如何将选中的对象转化为原始的DOM对象
Jun 09 Javascript
javascript实现鼠标拖动改变层大小的方法
Apr 30 Javascript
javascript中数组方法汇总
Jul 07 Javascript
Bootstrap零基础入门教程(二)
Jul 18 Javascript
微信小程序 Template详解及简单实例
Jan 05 Javascript
AngularJS中的缓存使用
Jan 11 Javascript
原生javascript实现的全屏滚动功能示例
Sep 19 Javascript
详解Vuex管理登录状态
Nov 13 Javascript
详解如何创建并发布一个 vue 组件
Nov 08 Javascript
gulp构建小程序的方法步骤
May 31 Javascript
基于JS实现textarea中获取动态剩余字数的方法
May 25 #Javascript
js将json格式的对象拼接成复杂的url参数方法
May 25 #Javascript
使用jquery获取url以及jquery获取url参数的实现方法
May 25 #Javascript
jquery分隔Url的param方法(推荐)
May 25 #Javascript
sso跨域写cookie的一段js脚本(推荐)
May 25 #Javascript
使用jquery提交form表单并自定义action的方法
May 25 #Javascript
浅析jQuery 遍历函数,javascript中的each遍历
May 25 #Javascript
You might like
PHP入门学习笔记之一
2010/10/12 PHP
php动态函数调用方法
2015/05/21 PHP
以文件形式缓存php变量的方法
2015/06/26 PHP
qTip2 精致的基于jQuery提示信息插件
2012/02/17 Javascript
httpclient模拟登陆具体实现(使用js设置cookie)
2013/12/11 Javascript
JS嵌套函数调用上下文的问题解决
2014/03/26 Javascript
用C/C++来实现 Node.js 的模块(二)
2014/09/24 Javascript
jQuery实现ichat在线客服插件
2014/12/29 Javascript
javascript操作符&quot;!~&quot;详解
2015/02/10 Javascript
jQuery Mobile开发中日期插件Mobiscroll使用说明
2016/03/02 Javascript
Jquery调用iframe父页面中的元素及方法
2016/08/23 Javascript
JavaScript实现通过select标签跳转网页的方法
2016/09/29 Javascript
javascript 注释代码的几种方法总结
2017/01/04 Javascript
微信小程序左滑删除效果的实现代码
2017/02/20 Javascript
超简单的Vue.js环境搭建教程
2017/03/17 Javascript
JS控件bootstrap datepicker使用方法详解
2017/03/25 Javascript
Node.js 8 中的重要新特性
2017/06/28 Javascript
Vue导出json数据到Excel电子表格的示例
2017/12/04 Javascript
vue中element 上传功能的实现思路
2018/07/06 Javascript
jquery实现垂直无限轮播的方法分析
2019/07/16 jQuery
手动实现vue2.0的双向数据绑定原理详解
2021/02/06 Vue.js
[01:51]2014DOTA2西雅图邀请赛 MVP 外卡赛black场间采访
2014/07/09 DOTA
python中getattr函数使用方法 getattr实现工厂模式
2014/01/20 Python
浅谈python装饰器探究与参数的领取
2017/12/01 Python
Python统计分析模块statistics用法示例
2019/09/06 Python
详解基于python-django框架的支付宝支付案例
2019/09/23 Python
基于Python的身份证验证识别和数据处理详解
2020/11/14 Python
viagogo法国票务平台:演唱会、体育比赛、戏剧门票
2017/03/27 全球购物
古驰英国官网:GUCCI英国
2020/03/07 全球购物
东方红海科技面试题软件测试方面
2012/02/08 面试题
小学新教师培训方案
2014/02/03 职场文书
2014党员干部四风问题对照检查材料思想汇报
2014/09/24 职场文书
迎国庆横幅标语
2014/10/08 职场文书
房屋授权无偿使用证明
2014/11/29 职场文书
看完这篇文章获得一些java if优化技巧
2021/07/15 Java/Android
根德5570型九灯四波段立体声收音机是电子管收音机的楷模 ? 再论5570
2022/04/05 无线电