动态加载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实现的一个Flash滚动轮换显示图片代码生成器
Mar 14 Javascript
javascript window.opener的用法分析
Apr 07 Javascript
jquery 无限级联菜单案例分享
Mar 26 Javascript
js中小数转换整数的方法
Jan 26 Javascript
Javascript验证用户输入URL地址是否为空及格式是否正确
Oct 09 Javascript
JavaScript中实现单体模式分享
Jan 29 Javascript
jQuery实现新消息闪烁标题提示的方法
Mar 11 Javascript
Markdown+Bootstrap图片自适应属性详解
May 21 Javascript
利用iscroll4实现轮播图效果实例代码
Jan 11 Javascript
JS验证字符串功能
Feb 22 Javascript
JavaScript实现AOP详解(面向切面编程,装饰者模式)
Dec 19 Javascript
javascript实现页面的实时时钟显示示例
Aug 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
用Php实现链结人气统计
2006/10/09 PHP
php中通过虚代理实现延迟加载的实现代码
2011/06/10 PHP
用来解析.htpasswd文件的PHP类
2012/09/05 PHP
php中session过期时间设置及session回收机制介绍
2014/05/05 PHP
PHP获取一段文本显示点阵宽度和高度的方法
2015/03/12 PHP
thinkPHP交易详情查询功能详解
2016/12/02 PHP
CI(CodeIgniter)框架实现图片上传的方法
2017/03/24 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
2019/10/15 PHP
php gethostbyname获取域名ip地址函数详解
2010/01/24 Javascript
限制上传文件大小和格式的jQuery插件实例
2015/01/24 Javascript
js实现仿微博滚动显示信息的效果
2015/12/21 Javascript
js 文字超出长度用省略号代替,鼠标悬停并以悬浮框显示实例
2016/12/06 Javascript
浅谈JavaScript的自动垃圾收集机制
2016/12/15 Javascript
微信小程序 122100版本更新问题解决方案
2016/12/22 Javascript
基于jQuery实现左侧菜单栏可折叠功能
2016/12/27 Javascript
jQuery实现文章图片弹出放大效果
2017/04/06 jQuery
jquery单击文字或图片内容放大并居中显示
2017/06/23 jQuery
使用JavaScript开发跨平台的桌面应用详解
2017/07/27 Javascript
基于VUE实现的九宫格抽奖功能
2018/09/30 Javascript
JavaScript中构造函数与原型链之间的关系详解
2019/02/25 Javascript
vue项目中微信登录的实现操作
2020/09/08 Javascript
python根据出生日期获得年龄的方法
2015/03/31 Python
用Python实现一个简单的线程池
2015/04/07 Python
详解Python中expandtabs()方法的使用
2015/05/18 Python
Pycharm学习教程(5) Python快捷键相关设置
2017/05/03 Python
Python3随机漫步生成数据并绘制
2018/08/27 Python
numpy:找到指定元素的索引示例
2019/11/26 Python
python [:3] 实现提取数组中的数
2019/11/27 Python
Nike加拿大官网:Nike.com (CA)
2019/04/09 全球购物
中国跨镜手机配件批发在线商店:TVC-Mall
2019/08/20 全球购物
特色冷饮店创业计划书
2014/01/28 职场文书
2014银行领导班子群众路线对照检查材料思想汇报
2014/09/17 职场文书
党员心得体会范文2016
2016/01/23 职场文书
python flask框架快速入门
2021/05/14 Python
Python实现学生管理系统(面向对象版)
2021/06/24 Python
使用kubeadm命令行工具创建kubernetes集群
2022/03/31 Servers