动态加载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 相关文章推荐
用一段js程序来实现动画功能
Mar 06 Javascript
JavaScript判断DOM何时加载完毕的技巧
Nov 11 Javascript
js 走马灯简单实例
Nov 21 Javascript
javascript制作的cookie封装及使用指南
Jan 02 Javascript
jQuery仅用3行代码实现的显示与隐藏功能完整实例
Oct 08 Javascript
4种JavaScript实现简单tab选项卡切换的方法
Jan 06 Javascript
js获取腾讯视频ID的方法
Oct 03 Javascript
jQueryUI Datepicker组件设置日期高亮
Oct 13 Javascript
Vue实现导出excel表格功能
Mar 30 Javascript
vue2.0+vue-router构建一个简单的列表页的示例代码
Feb 13 Javascript
vue动画效果实现方法示例
Mar 18 Javascript
微信小程序渲染性能调优小结
Jul 30 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
DOTA2 玩家自创拉野攻略 特色英雄快速成长篇
2020/04/20 DOTA
Laravel 框架控制器 Controller原理与用法实例分析
2020/04/14 PHP
js css后面所带参数含义介绍
2013/08/18 Javascript
动态创建按钮的JavaScript代码
2016/01/29 Javascript
浅析js绑定事件的常用方法
2016/05/15 Javascript
基于jQuery实现歌词滚动版音乐播放器的代码
2016/09/17 Javascript
详解jQuery中的事件
2016/12/14 Javascript
setTimeout函数的神奇使用
2017/02/26 Javascript
详谈Node.js之操作文件系统
2017/08/29 Javascript
JS实现图片放大镜插件详解
2017/11/06 Javascript
基于node下的http小爬虫的示例代码
2018/01/11 Javascript
JavaScript模板引擎实现原理实例详解
2018/12/14 Javascript
最简单的JS实现json转csv的方法
2019/01/10 Javascript
微信小程序分享功能onShareAppMessage(options)用法分析
2019/04/24 Javascript
js设计模式之单例模式原理与用法详解
2019/08/15 Javascript
layer弹出层自定义提交取消按钮的例子
2019/09/10 Javascript
Vue如何基于es6导入外部js文件
2020/05/15 Javascript
基于vue 动态菜单 刷新空白问题的解决
2020/08/06 Javascript
[00:10]DOTA2全国高校联赛 以DOTA2会友
2018/05/30 DOTA
Python 错误和异常小结
2013/10/09 Python
python开发环境PyScripter中文乱码问题解决方案
2016/09/11 Python
python爬取网易云音乐评论
2018/11/16 Python
python for 循环获取index索引的方法
2019/02/01 Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
2019/05/03 Python
PyTorch: 梯度下降及反向传播的实例详解
2019/08/20 Python
Tensorflow 多线程与多进程数据加载实例
2020/02/05 Python
python 如何读、写、解析CSV文件
2021/03/03 Python
全球最大化妆品零售网站:SkinStore
2020/10/24 全球购物
阿联酋最好的手机、电子产品和家用电器网上商店:Eros Digital Home
2020/08/09 全球购物
C语言笔试题回忆
2015/04/02 面试题
2014入党积极分子批评与自我批评思想汇报
2014/09/20 职场文书
初三毕业评语
2014/12/26 职场文书
乡镇党建工作总结2015
2015/05/19 职场文书
培训班开班主持词
2015/07/02 职场文书
Vue项目中如何封装axios(统一管理http请求)
2021/05/02 Vue.js
java.util.NoSuchElementException原因及两种解决方法
2022/06/28 Java/Android