动态加载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 相关文章推荐
IE本地存储userdata的一个bug说明
Jul 01 Javascript
javascript将异步校验表单改写为同步表单
Jan 27 Javascript
基于jQuery通过jQuery.form.js插件使用ajax提交form表单
Aug 17 Javascript
jQuery常用的一些技巧汇总
Mar 26 Javascript
js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码
May 13 Javascript
Jquery 自定义事件实现发布/订阅的简单实例
Jun 12 Javascript
AngularJS入门教程之表单校验用法示例
Nov 02 Javascript
JS设计模式之状态模式概念与用法分析
Feb 05 Javascript
React+Webpack快速上手指南(小结)
Aug 15 Javascript
axios 实现post请求时把对象obj数据转为formdata
Oct 31 Javascript
微信小程序实现组件顶端固定或底端固定效果(不随滚动而滚动)
Apr 09 Javascript
js实现无刷新监听URL的变化示例代码详解
Jun 03 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 保留字列表
2012/10/04 PHP
php生成txt文件标题及内容的方法
2014/01/16 PHP
php 解决substr()截取中文字符乱码问题
2016/07/18 PHP
swoole_process实现进程池的方法示例
2018/10/29 PHP
PHP simplexml_load_string()函数实例讲解
2019/02/03 PHP
iis6+javascript Add an Extension File
2007/06/13 Javascript
JavaScript 学习历程和心得分享
2010/12/12 Javascript
js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版
2011/01/08 Javascript
jQuery Deferred和Promise创建响应式应用程序详细介绍
2013/03/05 Javascript
JS中把字符转成ASCII值的函数示例代码
2013/11/21 Javascript
深入理解JavaScript编程中的原型概念
2015/06/25 Javascript
Avalon中文长字符截取、关键字符隐藏、自定义过滤器
2016/05/18 Javascript
使用jQuery给input标签设置默认值
2016/06/20 Javascript
Three.js学习之文字形状及自定义形状
2016/08/01 Javascript
基于Node.js + WebSocket打造即时聊天程序嗨聊
2016/11/29 Javascript
JavaScript之Vue.js【入门基础】
2016/12/06 Javascript
jquery 实时监听输入框值变化的完美方法(必看)
2017/01/26 Javascript
tab栏切换原理
2017/03/22 Javascript
Node.js设置CORS跨域请求中多域名白名单的方法
2017/03/28 Javascript
JavaScript hasOwnProperty() 函数实例详解
2017/08/04 Javascript
vue中使用element-ui进行表单验证的实例代码
2018/06/22 Javascript
vue基础之事件v-onclick=&quot;函数&quot;用法示例
2019/03/11 Javascript
VUE和Antv G6实现在线拓扑图编辑操作
2020/10/28 Javascript
Angular处理未可知异常错误的方法详解
2021/01/17 Javascript
wxPython之解决闪烁的问题
2018/01/15 Python
Python 读取指定文件夹下的所有图像方法
2018/04/27 Python
解决Atom安装Hydrogen无法运行python3的问题
2019/08/28 Python
Python基础之字符串操作常用函数集合
2020/02/09 Python
Python JSON常用编解码方法代码实例
2020/09/05 Python
Python实现敏感词过滤的4种方法
2020/09/12 Python
Pandas中两个dataframe的交集和差集的示例代码
2020/12/13 Python
html5 svg 中元素点击事件添加方法
2013/01/16 HTML / CSS
Sephora丝芙兰菲律宾官方网站:购买化妆品和护肤品
2017/04/05 全球购物
有趣、实用和鼓舞人心的产品:Inspire Uplift
2019/11/05 全球购物
学生检讨书怎么写
2014/10/09 职场文书
仓管员岗位职责
2015/02/03 职场文书