动态加载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 相关文章推荐
让你的博文自动带上缩址的实现代码,方便发到微博客上
Dec 28 Javascript
在多个页面使用同一个HTML片段《续》
Mar 04 Javascript
jQuery操作select的实例代码
Jun 14 Javascript
JavaScript中valueOf函数与toString方法深入理解
Dec 02 Javascript
JavaScript遍历table表格中的某行某列并打印其值
Jul 08 Javascript
JS去除iframe滚动条的方法
Apr 01 Javascript
jQuery实现的多级下拉菜单效果代码
Aug 24 Javascript
Bootstrap组件学习之导航、标签、面包屑导航(精品)
May 17 Javascript
利用JQuery直接调用asp.net后台的简单方法
Oct 27 Javascript
微信小程序转发事件实现解析
Oct 22 Javascript
vue组件传值的实现方式小结【三种方式】
Feb 05 Javascript
Vue+Bootstrap收藏(点赞)功能逻辑与具体实现
Oct 22 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
咖啡磨器 如何选购一台适合家用的意式磨豆机
2021/03/05 新手入门
如何在WIN2K下安装PHP4.04
2006/10/09 PHP
PHP函数常用用法小结
2010/02/08 PHP
用PHP实现Ftp用户的在线管理
2012/02/16 PHP
使用YUI+Ant 实现JS CSS压缩
2014/09/02 PHP
php实现批量删除挂马文件及批量替换页面内容完整实例
2016/07/08 PHP
自制PHP框架之模型与数据库
2017/05/07 PHP
测试你的JS的掌握程度的代码
2009/12/09 Javascript
ext 列表页面关于多行查询的办法
2010/03/25 Javascript
javascript:FF/Chrome与IE动态加载元素的区别说明
2014/01/26 Javascript
JS实现兼容各浏览器解析XML文档数据的方法
2015/06/01 Javascript
js仿支付宝多方框输入支付密码效果
2016/09/27 Javascript
JS简单封装的图片无缝滚动效果示例【测试可用】
2017/03/22 Javascript
详解vue2.0脚手架的webpack 配置文件分析
2017/05/27 Javascript
代码详解javascript模块加载器
2018/03/04 Javascript
vue单个组件实现无限层级多选菜单功能
2018/04/10 Javascript
vue动画效果实现方法示例
2019/03/18 Javascript
node.js实现上传文件功能
2019/07/15 Javascript
js实现简单的随机点名器
2020/09/17 Javascript
python实现的二叉树定义与遍历算法实例
2017/06/30 Python
Python实现多进程共享数据的方法分析
2017/12/04 Python
python简易远程控制单线程版
2018/06/20 Python
python对列进行平移变换的方法(shift)
2019/01/10 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
2019/01/17 Python
使用python实现哈希表、字典、集合操作
2019/12/22 Python
基于python3生成标签云代码解析
2020/02/18 Python
appium+python adb常用命令分享
2020/03/06 Python
西班牙伏林航空公司:Vueling
2016/08/05 全球购物
阿根廷在线宠物商店:Puppis
2018/03/23 全球购物
自考毕业自我鉴定范文
2013/10/27 职场文书
简单英文演讲稿
2014/01/01 职场文书
干部现实表现材料
2014/02/13 职场文书
优秀大学生求职自荐信范文
2014/04/19 职场文书
关于法制教育的宣传语
2015/07/13 职场文书
体育教师研修感悟
2015/11/18 职场文书
浅谈Python响应式类库RxPy
2021/06/14 Python