动态加载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 相关文章推荐
JavaScript 加号(+)运算符号
Dec 06 Javascript
Pro JavaScript Techniques学习笔记
Dec 28 Javascript
js中parseFloat(参数1,参数2)定义和用法及注意事项
Jan 27 Javascript
js比较和逻辑运算符的介绍
Mar 10 Javascript
javascript数组详解
Oct 22 Javascript
jquery SweetAlert插件实现响应式提示框
Aug 18 Javascript
javascript三种代码注释方法
Jun 02 Javascript
微信小程序tabbar不显示解决办法
Jun 08 Javascript
vue绑定的点击事件阻止冒泡的实例
Feb 08 Javascript
vue 监听屏幕高度的实例
Sep 05 Javascript
redux.js详解及基本使用
May 24 Javascript
Vue.js计算机属性computed和methods方法详解
Oct 12 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 文件扩展名 获取函数
2009/06/03 PHP
PHP实现采集抓取淘宝网单个商品信息
2015/01/08 PHP
php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中
2016/12/12 PHP
laravel多条件查询方法(and,or嵌套查询)
2019/10/09 PHP
TP3.2.3框架文件上传操作实例详解
2020/01/23 PHP
通过Unicode转义序列来加密,按你说的可以算是混淆吧
2007/05/06 Javascript
jquery offset函数应用实例
2012/11/14 Javascript
自己写了一个展开和收起的多更能型的js效果
2013/03/05 Javascript
jquery获取tr并更改tr内容示例代码
2014/02/13 Javascript
文本域中换行符的替换示例
2014/03/04 Javascript
AngularJS基础学习笔记之表达式
2015/05/10 Javascript
js剪切板应用clipboardData实例解析
2016/05/29 Javascript
原生js实现放大镜效果
2017/01/11 Javascript
JavaScript实现时钟滴答声效果
2017/01/29 Javascript
微信小程序实现下拉刷新和轮播图效果
2017/11/21 Javascript
微信小程序实现自动定位功能
2018/10/31 Javascript
小程序组件之自定义顶部导航实例
2019/06/12 Javascript
Vue.set 全局操作简单示例
2019/09/19 Javascript
js实现橱窗展示效果
2020/01/11 Javascript
原生JavaScript写出Tabs标签页的实例代码
2020/07/20 Javascript
微信小程序实现滚动Tab选项卡
2020/11/16 Javascript
Python标准库之sqlite3使用实例
2014/11/25 Python
python学习之面向对象【入门初级篇】
2017/01/21 Python
python远程连接服务器MySQL数据库
2018/07/02 Python
python如何生成网页验证码
2018/07/28 Python
python实现本地图片转存并重命名的示例代码
2018/10/27 Python
Python检测数据类型的方法总结
2019/05/20 Python
Python3安装pip工具的详细步骤
2019/10/14 Python
python快速排序的实现及运行时间比较
2019/11/22 Python
python 使用递归回溯完美解决八皇后的问题
2020/02/26 Python
波兰多品牌运动商店:StreetStyle24.pl
2020/09/22 全球购物
先进工作者推荐材料
2014/12/23 职场文书
十二生肖观后感
2015/06/12 职场文书
你会写请假条吗?
2019/06/26 职场文书
2021-4-3课程——SQL Server查询【2】
2021/04/05 SQL Server
Python Pandas pandas.read_sql函数实例用法
2021/06/21 Python