动态加载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 相关文章推荐
在第一个input框内输入内容.textarea自动得到第一个文件框的值的javascript代码
Apr 20 Javascript
jQuery 使用手册(三)
Sep 23 Javascript
node.js超时timeout详解
Nov 26 Javascript
jQuery使用hide方法隐藏指定元素class样式用法实例
Mar 30 Javascript
使用jQuery制作遮罩层弹出效果的极简实例分享
May 12 Javascript
JS传递对象数组为参数给后端,后端获取的实例代码
Jun 28 Javascript
Javascript生成带参数的二维码示例
Oct 10 Javascript
浅谈js函数的多种定义方法与区别
Nov 29 Javascript
基于bootstrap的选择框插件icheck
Dec 23 Javascript
Vue作用域插槽slot-scope实例代码
Sep 05 Javascript
微信小程序实现的自定义分享功能示例
Feb 12 Javascript
快速解决element的autofocus失效问题
Sep 08 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实现分页的一个示例
2006/10/09 PHP
php设计模式 DAO(数据访问对象模式)
2011/06/26 PHP
Ajax+PHP快速上手及简单应用说明
2013/07/24 PHP
php删除左端与右端空格的方法
2014/11/29 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
Laravel登录失败次数限制的实现方法
2020/08/26 PHP
javascript实现面向对象类的功能书写技巧
2010/03/07 Javascript
node.js中的socket.io入门实例
2014/04/26 Javascript
js实现遮罩层划出效果是生成div而不是显示
2014/07/29 Javascript
JavaScript 实现的checkbox经典实例分享
2016/10/16 Javascript
基于Vue2的移动端开发环境搭建详解
2016/11/03 Javascript
JS实现图片上传预览功能
2016/11/21 Javascript
微信小程序 input输入框控件详解及实例(多种示例)
2016/12/14 Javascript
AngularJS 防止页面闪烁的方法
2017/03/09 Javascript
vue事件修饰符和按键修饰符用法总结
2017/07/25 Javascript
vue 实现边输入边搜索功能的实例讲解
2018/09/16 Javascript
新版小程序登录授权的方法
2018/12/12 Javascript
JavaScript 判断数据类型的4种方法
2020/09/11 Javascript
vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法
2020/10/09 Javascript
[46:48]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第三局
2016/02/25 DOTA
python re正则表达式模块(Regular Expression)
2014/07/16 Python
详解关于Django中ORM数据库迁移的配置
2018/10/08 Python
在Python中使用Neo4j的方法
2019/03/14 Python
python+openCV利用摄像头实现人员活动检测
2019/06/22 Python
如何利用Python模拟GitHub登录详解
2019/07/15 Python
django+tornado实现实时查看远程日志的方法
2019/08/12 Python
Django form表单与请求的生命周期步骤详解
2020/06/07 Python
搭建pypi私有仓库实现过程详解
2020/11/25 Python
html5实现九宫格抽奖可固定抽中某项奖品
2020/06/15 HTML / CSS
教师实习自我鉴定
2013/12/13 职场文书
小学生红领巾广播稿
2014/01/21 职场文书
中药专业自荐信范文
2014/03/18 职场文书
期末评语大全
2014/05/04 职场文书
高三复习计划
2015/01/19 职场文书
党员评议自我评价
2015/03/03 职场文书
Oracle11g R2 安装教程完整版
2021/06/04 Oracle