动态加载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异或加解密效果代码
Jun 25 Javascript
Javascript中的for in循环和hasOwnProperty结合使用
Jun 05 Javascript
巧用jquery解决下拉菜单被Div遮挡的相关问题
Feb 13 Javascript
JavaScript避免代码的重复执行经验技巧分享
Apr 17 Javascript
浅析webapp框架AngularUI的demo
Dec 21 Javascript
在JavaScript中正确引用bind方法的应用
May 11 Javascript
浅谈jQuery添加的HTML,JS失效的问题
Oct 05 Javascript
浅谈Node.js CVE-2017-14849 漏洞分析(详细步骤)
Nov 10 Javascript
js中offset,client , scroll 三大元素知识点总结
Sep 11 Javascript
jQuery实现小火箭返回顶部特效
Feb 03 jQuery
VUE 项目在IE11白屏报错 SCRIPT1002: 语法错误的解决
Sep 27 Javascript
react国际化react-intl的使用
May 06 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
Eclipse中php插件安装及Xdebug配置的使用详解
2013/04/25 PHP
Yii控制器中操作视图js的方法
2016/07/04 PHP
PHP在线打包下载功能示例
2016/10/15 PHP
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
2016/12/14 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
PHP自定义序列化接口Serializable用法分析
2017/12/29 PHP
Laravel5.1框架注册中间件的三种场景详解
2019/07/09 PHP
JavaScript 字符串乘法
2009/08/20 Javascript
jQuery Ajax之$.get()方法和$.post()方法
2009/10/12 Javascript
浅析Node在构建超媒体API中的作用
2014/07/30 Javascript
深入浅出分析javaScript中this用法
2015/05/09 Javascript
JavaScript中函数(Function)的apply与call理解
2015/07/08 Javascript
对js eval()函数的一些见解
2016/08/15 Javascript
node学习记录之搭建web服务器教程
2017/02/16 Javascript
Vuejs实现带样式的单文件组件新方法
2017/05/02 Javascript
Angular4实现图片上传预览路径不安全的问题解决
2017/12/25 Javascript
重新认识vue之事件阻止冒泡的实现
2018/08/02 Javascript
Javascript异步执行不按顺序解决方案
2020/04/30 Javascript
Javascript文本框脚本实现方法解析
2020/10/30 Javascript
[02:42]DOTA2英雄基础教程 杰奇洛
2013/12/23 DOTA
Python实现115网盘自动下载的方法
2014/09/30 Python
Python文件和流(实例讲解)
2017/09/12 Python
Python金融数据可视化汇总
2017/11/17 Python
python安装cx_Oracle和wxPython的方法
2020/09/14 Python
python中spy++的使用超详细教程
2021/01/29 Python
阿联酋彩妆品牌:OUD MILANO
2019/10/06 全球购物
BannerBuzz加拿大:在线定制横幅印刷、广告和标志
2020/03/10 全球购物
关于递归的一道.NET面试题
2013/05/12 面试题
外包公司软件测试工程师
2014/11/01 面试题
日语专业毕业生求职信
2013/12/04 职场文书
大学生党员批评与自我批评
2014/09/28 职场文书
党的群众路线教育实践活动自我剖析材料
2014/10/08 职场文书
2020优秀员工演讲稿(三篇)
2019/10/17 职场文书
Python还能这么玩之用Python修改了班花的开机密码
2021/06/04 Python
详解Python为什么不用设计模式
2021/06/24 Python
德生2P3收音机开箱评测
2022/04/30 无线电